分支建立于合并

git commit # 提交
git branch branch_name # 新建分支
git checkout branch_name # 切换分支

git merge branch_name # 合并分支
# 将branch_name合并到当前分支,并增加一次commit

git rebase branch_name # 复制分支
# 将当前分支所有commit复制到branch_name,没有新增commit
# 当前分支和branch_name 有共同的祖先

在分支树上移动

branch_name指向分支树上的一个提交记录,每一个提交记录都有唯一的SHA-1 Hash值标识作为commit id

默认HEAD指向当前提交记录,当前记录有分支名,则显示为branch_name*

HEAD可以指向任何其他的提交记录,只需要checkout到一个指定的commit id,或者使用引用

git checkout da3423*
# 相对引用^
git checkout HEAD^^ # 将HEAD指向HEAD的第2父提交
git checkout master^ # 将HEAD指向master的第1父提交
git branch -f master HEAD^^^ # 强制将master指向HEAD的第三父提交
# 相对引用~
git checkout HEAD~10 # 将HEAD指向HEAD前10个commit id
# 撤销变更
git reset master^ # 当前分支指向master^,工作区内容不变
git revert master^ # 增加一次提交,使当前分支与master^相同

移动提交记录

git cherry-pick <提交号>...
# 将一系列提交copy到当前分支
git rebase -i <提交号>
# 以-i参数为基,重新整理提交(排序,删除等)

最后修改日期: 2021-10-09