合并和变基是最流行的两种方式,将一个分支的更改合并到另一个分支。下面我们来谈谈它们的区别。
什么是 Git 合并?Git 的 merge 命令允许你合并来自不同分支的内容。它将源分支的内容合并到目标分支中。合并是开发人员常用的步骤。无论是为了测试、修复错误或其他原因而创建分支,合并操作会将更改应用到另一个分支。在这个过程中,只有目标分支会被更改。源分支的历史不会被改变。
合并很有用,特别是在你想要将长期的功能分支更改合并到主分支时。合并会保留两个分支的提交记录,这让你能轻松看出哪些更改来自哪个分支。
视觉表现: A---B---C (目标分支)
\
D---E (源分支)
执行了 git merge source_branch
之后:
或
在你用 git merge source_branch
合并之后:
A---B---C---F (包含合并提交的,如下所示的目标分支)
\ /
D---E (来源分支)
实践任务:
我已经把一个仓库克隆到服务器上了。
- 切换到新分支:
git checkout -b feature-branch1
,
2. 使用 touch 或 vim 命令创建一个文件,做一些修改并提交这些修改:git add . && git commit -m "一些消息"
。
3、重复步骤二,再进行几次提交。
步骤4. 切换到主分支:git checkout master
。
5. 在主干分支上提交新的更改。
6. 将特性分支合并到主分支:git merge feature-branch1
。步骤6中,feature-branch1
表示具体的功能特性分支。
合并将特性分支的变化集成到主分支中,创建一个新的提交记录,反映合并后的历史记录。
什么是 Git Rebase?Rebase 是将一个分支的更改合并到另一个分支的另一种方式。Rebasing 是将你的分支从一个提交变到另一个提交,让你的分支看起来就像是从另一个提交开始的一样。Rebasing 简化了历史记录,因为在过程中,多余的提交会被移除。
视觉上的表示: A---B---C (目标)
\
D---E (源)
在执行了 git rebase 目标分支名
之后:
A---B---C---D'---E' (目标分支,带有重新整理的提交记录)
动手操作:
我已经把一个仓库克隆到服务器上了。
你可以使用以下命令来创建一个新分支:git checkout -b feature-branch
。
2. 做一些改动然后提交:git add . ;git commit -m "some message"
3. 重复步骤 2,再做几个提交。
使用以下命令来查看提交的ID。
4. 你可以通过下面的命令切换到主分支:git checkout master
,。
5. 现在用 touch 命令创建一个文件,然后在主分支上做一个新的提交。
6. 切换回功能分支:git checkout feature-branch。
7. 现在,将你的功能分支合并到主分支上:git rebase master
通过在最新的 master 分支提交基础上应用你的特性分支更改,你已经使历史更干净,消除了不必要的合并提交。
总结关键差异:
- 提交历史记录: 合并会保留历史记录,包括合并提交。而变基则通过在目标分支上重新应用提交来创建一个线性的历史记录。
- 使用场合: 当你希望保留功能开发过程中历史记录时使用合并。当你希望有一个更干净、线性的历史记录时,使用变基。
- 风险: 变基会重写提交历史,在不正确操作或在共享分支上操作时,可能会带来危险。
实际上,是否使用 git merge
还是 git rebase
,取决于项目的具体需求、团队的工作习惯以及团队在维护项目提交历史方面的共识。
想了解更多关于DevOps的世界,请关注我。
欢迎浏览我的博客。
共同学习,写下你的评论
评论加载中...
作者其他优质文章