Learn Git Branching 笔记

基础Git命令

1.提交

git commit  -m "annotation"

以当前分支(master)的当前节点作为父节点新建一个子节点,其他分支不受影响:
master分支为当前所在分支
2.新建分支

git branch <new_branch_name>

3.切换分支

git checkout <branch_name>

4.分支新建和切换同时完成

git checkout -b <new_branch_name>

5.分支合并
分支合并前
分支合并后

git merge bugFix

上述命令将bugFix分支合并到master分支上,如图:

当前master分支的C4节点包含了所有代码库的修改,而bugFix分支留待解决:

git checkout bugFix
git merge master

最后状态
此时,两个分支均到达最新节点,上溯到C0包括代码库所有的修改记录

6.分支合并的另一种方式
在这里插入图片描述

git rebase master 

命令将bugFix分支里的工作直接移动master分支上,使得并行开发的工作看起来像线性开发
在这里插入图片描述
接着更新master分支:

git checkout master
git rebase bugFix

高级Git命令

1.分离HEAD
HEAD初始一般指向分支名,分支名指向当前提交记录节点,查看HEAD指向:

cat ./.git/HEAD
git symbolic-ref HEAD

使用下列命令切换HEAD到指定节点

git checkout <node_hash_name>

2.便捷分离HEAD
没有可视化提交树的情况下,使用git log查看提交记录的哈希值,40位字符只需要输入前几位唯一标识即可。
推荐使用相对引用:

git checkout HEAD^   向上移动一个提交记录,即父节点
git checkout HEAD~<num> 向上移动多个提交记录

3.强制修改分支位置

git branch -f master HEAD~3

上述命令将master分支强制指向HEAD的第三级父提交节点
在这里插入图片描述在这里插入图片描述
4.撤销变更
(1) git reset
将本地分支记录回退几个提交记录来实现撤销更改,使回退路径上的几个提交记录未存在过一样

git reset HEAD~1

若使用git reset HEAD则无事发生
在这里插入图片描述在这里插入图片描述
C2提交记录节点消失

(2) git revert
git reset 修改的是本地代码库的记忆,对远端分支不做影响,为了撤销更改并分享给别人,使用git revert

git revert HEAD

上述命令撤销当前提交记录节点的修改,复制一份父节点,新的提交记录C2’与C1相同,可以推送到远程仓库与别人分享
在这里插入图片描述在这里插入图片描述

整理提交记录

未完待续

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章