Git原理及命令总结

 |
总阅读量


工作区-(暂存区)-本地仓库-远程仓库

1. 基本操作

2. 工作区文件状态转换

  • 已追踪状态:纳入版本控制,【已修改/未修改/已暂存】状态
    注: 经克隆下来的仓库处于:【已跟踪(未修改)】状态
  • 未追踪状态:未被纳入版本控制。
    注:例如经克隆下来的仓库,在仓库添加一个文件,该文件处于未跟踪
    • 未跟踪的文件经过git add命令转换到【已跟踪】(已暂存)
    • 未修改的文件经过【修改】—>【已修改】
    • 已修改的文件经过git add命令转换到【已暂存】
    • 已暂存的文件经过git commit命令转换到【未修改】
    • 未修改的文件经过git rm 命令转换到【未跟踪】, 文件被删除。

3. 分支相关操作

  • Git branch -a 查看所有分支,HEAD指向
  • Git checkout 分支名 ,切换分支
  • git status 查看当前分支状态
  • Git reflog 历史操作s
  • Git merge 合并远程和本地仓库的冲突
  • git clone -b 分支名 克隆指定仓库的分支到本地

    3.1 克隆指定仓库分支,修改后再上传到该分支

    首先将指定分支克隆下来:
    git clone -b <分支名> <url>.git
    
    其次新建一个本地分支并与远程分支关联,同时切换到本地分支:
    git checkout -b <本地分支名> origin/<远程分支名>
    
    此时,开始修改克隆下来的分支文件,修改好以后,将当前目录添加至缓冲区
    git add .  # 添加新增的、修改的文件
    或者
    git add -A # 添加新增的、修改的、删除的文件
    
    接下来将缓存区的目录提交至本地仓库
    git commit -m <"修改的注释">
    
    最后将本地仓库push到远程仓库:
    git push origin <远程仓库名>
    

4. Git 撤销commit 方法

  • Git revert (还原某个commit, 但留下还原记录),其基本用法为,其中 -n 表示,表示revert以后需要重新提交一个commit信息再推送,若不使用 -n 则会弹出vim编辑commit注释。
    git revert -n <commit-id>
    
    假如有一条commit线,
    graph LR;
    subgraph flow
    A-->B-->C
    end
    上方的revert命令中(可通过git log命令查看)为B的id,则执行以上命令后,commit线变为以下
    graph LR;
    subgraph flow
    A-->B-->C-->D
    end
    subgraph pointer
    HEAD-->master
    end
    master-->D
  • Git reset (整段commit还原,不留记录,其修改HEAD指针的指向位置。
    git reset --hard <commit-id>
    
    变为之前的commit-id对应版本)。适用于只想恢复到之前某个提交的版本,后面的都不要了,用commit图表示如下,还是上面的commit线,假如需要回退到A版本,将上面的commit-id设为A,执行命令后变为如下:
    graph LR;
    subgraph flow
    A
    end
    subgraph pointer
    HEAD-->master-->A
    end

雪林于

抛砖引玉 亦或 他山之石,可以攻玉。