Git 变基
什么是变基,以及如何使用 git rebase 命令?本课将为你解答这些问题。
git rebase 命令
变基(rebasing)有助于确保你正在工作的分支是从父分支的最新版本分出的。
假设你从 master 分支新建了一个分支,并在此基础上继续开发,添加了新的提交。在此期间,其他贡献者将他们的代码合并到了 master 分支,使得 master 分支产生了新的提交和更新。此时,你的分支状态可能如下图所示:
理想情况下,你希望你当前工作的分支能够基于 master 分支的最新提交。这一需求正是变基操作所要解决的问题。
如果你当前正在工作的分支名为 new_branch,它源自 master 分支,而 master 分支在你创建该分支之后又有了新的更新,那么你需要执行以下命令,将你的分支变基到 master 分支的最新版本:
1git rebase <parent_branch>
具体来说,就是:
1git rebase master
如果没有错误且无冲突,最终你的分支将会基于 master 分支的最新提交重新应用所有更改,从而修改了自身的提交历史。
让我们更直观地看看 git rebase 到底做了什么:
实际操作中的变基
下面我们通过一个实际例子来测试 git rebase 命令。在下方提供的终端环境中,已经准备好了两个分支:master 和 new_branch。
new_branch 是在 master 分支完成初始提交(添加了 file1.txt 文件)之后创建的。
随后,new_branch 自己也进行了一次提交,添加了新文件 file2.txt。但在这之后,master 分支也新增了一次提交,这意味着这次提交不会出现在 new_branch 的提交历史中。我们可以通过 git log 命令来验证这一点。
下面分别查看两个分支的日志输出:
### master 分支的 git 日志
### new_branch 分支的 git 日志


现在,我们希望让 new_branch 从 master 分支的最新提交点开始,也就是说,new_branch 应该从 master 的最新提交处分出。
为此,你需要执行以下步骤:
- 从当前的
master分支切换到new_branch; - 执行命令
git rebase master。
file1.txt git add file1.txt git commit -m "added hello world text to file1" clear git branch" mode="edit">
如果一切顺利,new_branch 的提交历史将会被更新。你可以再次使用 git log 命令来验证结果。
看起来很简单。但如果变基过程中中途失败怎么办?如果 master 分支的新提交与 new_branch 上的更改存在冲突呢?