• git用法


    网站链接:learngitbranching
    这是一个网页版的小游戏,可以帮助学习使用 Git 命令,了解 Git 的工作机制,有很多关卡,全面学习使用 Git 命令。

    git-config

    1. 配置命令:
    git config --global user.name "xxx"
    git config --global user.email xxxxxxxxxx@163.com
    git config --global http.postBuffer 2M # 最大上传文件的大小
    git config --global color.ui true
    
    2. 查看配置:
    git config --list
    cat ~/.gitconfig # 查看配置文件
    
    3. 直接修改配置文件
    vim ~/.gitconfig
    

    配置文件内容如下:

    [user]
            email = 19805159366@163.com
            name = SEUZTh
    [https]
    [http]
            postBuffer = 2M
    
    4. 删除配置
    git config unset --global user.name
    

    git-init

    1. 初始化

    • 使用当前目录作为Git仓库,我们只需使它初始化。

    git init
    

    该命令执行完后会在当前目录生成一个 .git 目录。
    • 使用我们指定目录作为Git仓库。

    git init newrepo
    
    2. 查看生成的.git目录
    cd .git
    ls
    

    除了config这个文件,.git的作用就是存储项目级别的配置信息。

    git-commit

    1. 显示工作目录和暂存区的状态
    git status
    
    2. 提交目录下所有文件
    git add .
    
    3. 提交指定文件
    git add xxx.格式
    
    4. 添加说明
    git commit -m '说明'
    
    5. 查看历史提交
    git log
    

    git-diff

    1. 查看修改前后的区别
    git-diff
    加号表示添加的内容,减号表示删除的内容。
    即使是修改某一行,也会显示删除和添加。
    
    2. 查看暂存区和Reportory的区别
    git diff --staged
    

    git-rename

    1. 查看状态

    给文件重命名后查看git status会显示删除了一个文件,有一个文件未被跟踪

    2. 告诉git,删除了某文件
    git rm xxx.格式
    
    3. 添加重命名后的文件
    git add xxx.格式
    

    git-mv

    1. 重命名文件
    git mv 旧文件.格式 新文件.格式
    
    2. 移动文件或目录
    git不会跟踪空白目录,新建目录后,查看状态时不会提示有新文件夹。
    git mv xxx.格式 新文件夹/
    git mv 旧文件夹 新文件夹/
    

    查看状态时会提示重名了,新文件名包含文件路径。

    git-rm

    1. 删除文件
    git rm xxx.格式
    

    git-head

    1. 恢复文件
    git checkout HEAD -- xxx.格式 # HEAD代表最近的一次提交,--表示当前分支
    
    2. 提交删除后恢复文件

    如果是rm删除后并commit提交后,工作目录变成干净的,此时想要恢复的话,需要恢复到最近一次的上一次提交

    git checkout HEAD^ -- xxx.格式 # ^表示上一次提交,两个^^上上次
    

    git-revert

    2. 还原某次提交
    只查看有id号的一行
    git log --oneline
    git revert id号
    

    git-reset

    1. soft

    不会影响到工作区和暂存区的东西。

    git log --oneline
    git reset --soft id号 # 将指针指向id这次提交
    

    再次commit提交,会覆盖掉id号后面的提交。

    2. mixed

    把工作区和暂存区直接重置到一个提交的状态。

    git reset --mixed id号
    

    会发现暂存区中的东西不见了,需要git add添加并commit提交。

    3. hard

    会把暂存区的东西重置到指定的提交状态,并把指针指向这个提交

    git reset --hard id1
    

    会发现工作目录干净了。

    git-branch

    1. 查看项目所有的分支
    git branch
    “*”星号表示当前分支的位置。
    
    2. 创建新分支
    git branch xxx
    
    3. 切换分支
    git checkout xxx
    
    4. 查看当前分支
    git branch
    

    git-checkout

    1. 查看提交历史(显示是哪个分支上的)
    git log --oneline --decorate
    
    2. 切换到主分支
    git checkout master
    

    此时查看历史只能查看master分支上的提交。

    3. 查看所有分支的历史提交
    git log --oneline --decorate --all
    

    git-branch-diff

    1. 查看两个分支的区别
    git diff master..某某某
    
    2. 查看两个分支的同一文件的区别
    git diff master..某分支 某文件
    

    git-fast-forward

    1. 合并某分支到master
    git merge 某分支
    

    这是一个Fast-forward,不会是一个新的提交,查看历史提交,会显示最后一次是在分支上进行的提交。

    git diff master..某分支 对比后没有区别。

    git-merge

    1. 切换分支
    git checkout 某分支
    git branch # 查看当前分支
    
    2. 快捷提交
    git commit -am '说明'
    git log --oneline # 查看历史提交
    
    3. master和某分支均已修改的情况下合并

    不能再使用Fast-forward。

    git log --oneline --decorate --all -19 --graph # 查看10条,所有分支的历史提交
    git branch # 查看当前所在分支
    git merge 某分支 
    

    输入合并提交的描述(可保持默认)
    再次查看:

    git log --oneline --decorate --all -19 --graph # 查看10条,所有分支的历史提交

    git-conflict

    1. 合并分支时出现冲突

    将master合并到某分支时

    git merge master
    

    提示CONFLICT (content): Merge conflict in xxx.
    到该文件中,git已经给标出冲突的内容,删掉我们不需要的,留下需要的即可:

    <<<<<<< HEAD
    内容
    =======
    内容
    >>>>>>> master
    

    接下来提交:

    git add.
    git commit # 这里可以不用写描述信息
    

    把弹出的内容中Conflicts那几行代码删除,保存退出,即合并成功,查看一下日志:

    git log --oneline --decorate --all --graph
    

    rm-branch

    1. 给分支重命名
    git branch -m 已经存在的分支 新名字
    
    2. 删除分支
    git branch -d 某分支
    

    stash

    1.保存工作进度

    查看状态:

    git status
    

    看到有已经修改过的,但想修改其他的提交,并不想提交它,就保存当前进度:

    git stash save '修改了某某文件'
    git status # 目录是干净的
    
    2. 查看保存的工作进度的列表
    git stash list
    
    3. 对比工作进度和现在目录的区别
    git stash show -p stash@{代号} # 代号使用git stash list查看
    
    4. 恢复工作进度
    git stash apply stash@{代号}
    
    5. 删除工作进度
    git stash drop stash@{0}
    
    6. 恢复工作进度时直接删除工作进度
    git stash pop stash@{代号}
    

    log

    1. 查看历史
    git log1
    

    默认显示全部提交日志。
    f 键向下翻页,b键 向上翻页,q 键退出显示。

    2. 显示简单的日志列表
    git log --oneline
    git log --oneline -行数
    git log --oneline --author="作者"
    
    3. 显示指定内容的提交

    “内容”为说明中所写到的。

    git log --oneline --grep='内容'
    
    4. 显示指定日期的提交
    git log --oneline --before='2021-08-03' # 2021.08.03之前的提交
    git log --oneline --before='1 week' # 1周之前的提交
    git log --oneline --before='3 days' # 3天之前的提交
    
    5. 图形效果
    git log --oneline --graph
    
    6. 查看log详细使用手册
    git help log
    

    alias

    1. 给常用命令添加别名

    给checkout设置别名为alias:

    git config --global alias.co checkout
    

    查看配置:
    cat ~/.gitconfig

    2. 给命令行命令设置别名
    vi ~/.bashrc
    

    给“git checkout”设置别名,修改配置文件:

    alias gco='git checkout'
    

    sourch一下生效:

    source ~/.bashrc1
    

    ignore

    让Git忽略某个文件:

    git config --global core.excludesfile ~/.gitignore_global
    vi ~/.gitignore_global
    

    输入文件名。以后就会自动忽略这个文件。

    ls -la #查看以.开头的文件
    

    gitignore

    1. 在项目根目录下指定需要忽略的文件
    vi .gitignore
    

    比如想忽略所有扩展名为“.log”的文件,输入:

    *.log
    

    保存退出。
    提交:

    git add.
    git commit -m '添加了 .gitignore 文件'
    

    Git 配置 socks5 代理

    其中 port 根据代理给定的端口号进行设置:

    git config --global http.proxy 'socks5://127.0.0.1:port'
    git config --global https.proxy 'socks5://127.0.0.1:port'
    

    如果你有代理可以这样使用,没有代理就只能看自己的网络是否能顺利访问 Github 了。

    第一次 push 代码的步骤

    git init
    git add .
    git commit -m '说明'
    git remote add origin https://xxx.git
    git push -u origin main1
    

    Github 团队协作

    参考链接:github 多人如何一起开发? - 视觉派Pie的回答 - 知乎

    克隆的项目子模块作为新项目文件跟踪

    我们经常会从 Github 上下载一些功能包放在自己的文件夹中作为子项目使用,这时,当我们试图将本地的代码 push 到 Github 上时,本地状态现实代码已经全部提交,但是自己的 Github 仓库里只有子项目的空文件夹,这是因为子文件夹下面含有 .git 文件夹,因此导致该子文件夹无法被 Git 跟踪!

    先把 .git 这个文件夹删除(该文件夹在 Linux 下为隐藏文件,需要 Ctrl+h 才能现实。

    git rm --cached folder # 其中 folder 为子文件夹。
    git add folder
    

    转载自:什么,你还不会用 Git 管理代码?我把我的学习笔记透漏给你吧,三小时掌握

  • 相关阅读:
    poj 2942 Knights of the Round Table 双连通分量
    zoj 2588 Burning Bridges 桥
    desin pattern
    android
    ubuntu
    centos
    android布局
    gradle
    好站
    tomcat datasource
  • 原文地址:https://www.cnblogs.com/brewin/p/15923486.html
Copyright © 2020-2023  润新知