使用场景

变更分支的基节点,使提交历史更线性、优雅。

模拟场景与使用步骤

步骤1
开发A,开发阶段

git checkout -b feature/test1
touch feature_test1
git add .
git commit -m 'commit in feature/test1'
git push --set-upstream origin feature/test1

步骤2
开发B,在 master 分支提交

git checkout master
touch master_add1
git add .
git commit -m 'commit in master_add1'
git push

步骤3
开发A,开发完毕,准备发布

git checkout feature/test1
git rebase master           # 开发分支变基
git push --force-with-lease # 开发分支变基后,强制改变远程分支,若 --force-with-lease 失败,则可能需要更新开发分支 [git pull --rebase]
git checkout master
git merge --squash feature/test1
git commit -m 'git merge --squash feature/test1'
git push

上述步骤3可有更佳实践,在合入 master 时进行压缩可以让 master 分支更 ”清爽“,即:
步骤3
开发A,开发完毕,准备发布

git checkout feature/test1
git rebase master           # 开发分支变基
git push --force-with-lease # 开发分支变基后,强制改变远程分支,若 --force-with-lease 失败,则可能需要更新开发分支 [git pull --rebase]
git checkout master
git merge --squash feature/test1                 
git commit -m 'git merge --squash feature/test1' # 经过 --squash 压缩后,拉出所有变更内容,需要 commit 一次 
git push

特别注意

企业微信20220511-173242.png

一旦开发分支中 feature/test1,有节点被其它分支依赖(如:被 master 分支 merge,或其它开发分支 feature/test2 merge,则 feature/test1 就不要再用 rebase 了,否则大概率事故)

git rebase 变基动图

v2-6b8427b4baf6cdfb08b852ab1cdb4941_b.gif

参考资料

https://cloud.tencent.com/developer/article/1341129
https://zhuanlan.zhihu.com/p/132573100

文章目录