git --- Branch Diverged
Branch Diverged是如何形成的
- 尝试提交并将更改推送到 master 分支时,是否看到这条烦人的消息
原因是:
- 直到更改 B 之前,我的分支和“origin/master”完全相同。从更改 B 开始,我的分支和“origin/master”开始出现分歧。我的分支从更改 E、F 和 G 开始,而“origin/master”则遵循更改 C 和 D,这完全解释了消息“您的分支和“origin/master”已出现分歧,分别有 3 个和 2 个不同的提交。”这里,3 代表 E、F 和 G,而 2 代表 C 和 D
- 注意:这种情况通常会在您尝试将更改合并到“origin/master”时发生,而您团队中的其他人在您与“origin/master”同步之后、合并更改之前推送了一些其他更改
如何解决
Rebase
git rebase origin/master
- 您的分支曾经基于更改 B,现在基于更改 D。现在,您应该可以毫无问题地将代码从分支合并到“origin/master”。
- 优点:更清晰/线性的 git 历史记录,可帮助人们更快、更轻松地找到导致回归的原因(如果有的话)。
- 缺点:如果操作错误,合并冲突可能会变得更加频繁,并且可能会丢失提交历史记录。
Merge
git merge origin/master
- 如您所见,尽管您的分支和“origin/master”已经分开,但最终还是合并在一起了。
- 优点:解决冲突更简单、更快捷。
- 缺点:非线性 git 历史记录。
- 我个人更喜欢 rebase,因为它提供了更线性的 git 历史记录,这在将来需要查看 git 历史记录时非常有用。但是,在 rebase 时解决冲突可能会很麻烦。