分支是指从主分支中分离出来,这样你就可以单独工作,而不影响主代码和其他开发人员。在创建 Git 存储库时,默认情况下,我们被分配了 master 分支。当我们开始提交时,这个主分支会不断更新并指向存储库的最后一次提交。
Git 中的分支看起来像这样:
变基
在 Git 中重新定位是在另一个基础技巧之上集成一系列提交的过程。它获取一个分支的所有提交,并将它们附加到新分支的提交中。 Git 变基如下所示:
rebase 命令的技术语法是:
git rebase [-i | –interactive] [ options ] [–exec cmd] [–onto newbase | –keep-base] [upstream [branch]]
用法:
rebase 的主要目的是保持一个逐渐直接和干净的项目历史。 Rebase 产生了一个完美的线性项目历史,它可以从特性的最终提交一直到项目的开始,甚至不需要分叉。这样可以更轻松地导航您的项目。
标准 v/s 交互式变基
当 rebase 命令接受一个 – i参数时,Git rebase 处于交互模式。这代表交互式。没有任何参数,该命令在标准模式下运行。
为了实现标准的变基,我们遵循以下命令:
git rebase master branch_x
where branch_x is the branch we want to rebase
上面的命令等价于下面的命令,它会自动获取当前工作分支中的提交并将它们应用到将提到的分支的头部:
git rebase master
而在交互式变基中,您可以在将单个提交移动到新分支时更改它们。它使您可以完全控制分支的提交历史。
为了实现交互式rebase,我们遵循以下命令:
git checkout branch_x
git rebase -i master
此命令列出所有将要移动的提交,并要求单独重新设置所有提交,然后根据您输入的选项重新设置它们。这使您可以完全控制项目历史记录的样子。
合并 v/s 变基
merge 和 rebase 都用于合并分支,但区别在于将一个分支集成到另一个分支后的提交历史记录。在 Git 合并中,所有提交的开发人员的提交都将出现在 git 日志中。这对初学者来说真的很好,因为任何开发人员都可以回滚头部进行提交。而在 git rebase 中,只有一个开发人员的提交将被标记在 git 日志中。高级开发人员更喜欢这个,因为它使提交历史线性和干净。
合并命令如下:
git merge branch_x master
这会在合并的分支中创建一个新提交,将两个分支的历史联系在一起,为您提供一个看起来像这样的分支结构,而不是我们上面看到的变基:
Note: After performing rebasing, we are by default on the last commit of the rebased branch.