【git进阶】git rebase(变基)
git rebase
有很多用武之地,我一一道来
合并分支
当多人协作同一个分支时,在提交我们自己版本之前,我们会先用git pull
获取远端最新的版本。但是
git pull = git fetch + git merge
git merge
是一个非线性的合并操作,大量的merge会造成日志线的分散和交错。实际上
git pull --rebase = git fetch + git rebase
以后建议使用git merge --rebase
,使日志线呈一条线。另外变基操作得确保工作区的干净,也就是得先使用git stash -u
隐藏工作区的所有变动,然后变基,最后git stash pop
恢复工作区。
说到git stash
,这里引入一个案例:如果你现在正在分支dev上,然后主分支(main)出现了bug,需要紧急修复。你在dev上的功能尚未完成,不能现在提交,如何操作?
# 隐藏工作区
(dev) git stash -u
# 切换到main
(dev) git checkout main
# 复制临时分支,避免污染主分支
(main) git checkout -b main_f