2016-06-13 155 views
1

我的团队最近从Using Perforce转换为Git进行源代码管理。我无法找到一个好答案的一个问题是如何正确地将来自origin:master的更改更改集成到我的要跟踪原始特征的分支(两个开发人员正在提交到分支中)。Git将主合并到远程跟踪功能分支

我试图从主执行一个合并,但后来我看到一个合并提交,它显示了我在当前分支中修改的所有文件。这是预期的吗?

请注意,我的团队正在使用SourceTree而不是命令行。

+2

是的,合并创建一个新的提交与两个父母,_merging_两个分支的历史。如果两个分支中的相同文件都发生了变化,您将看到此提交通过导入其他分支的更改来修改这些文件。 – Useless

+0

这是一个真正的合并或非快速合并。将BranchA合并到BranchB将BranchA的所有提交引入到BranchB中。如果BranchB的头部是BranchA头部的祖先,则会进行快速合并。即使是快速前进的情况,选项'--no-ff'也可以将合并解析为真正的合并。如果你只需要一些BranchA的提交,你可以使用'git cherry-pick'或'git merge'来代替。 – ElpieKay

回答

1

如果功能分支由多个团队成员使用merge是最好的选择,在其他情况下,我更喜欢使用rebase

默认情况下,合并是快进(--ff),只要有可能,如果不是(conflits等),它们将不会快速转发(--no-ff)。

当它们没有被快速转发时,它们会产生一个额外的合并提交(就像你的情况),并带有一条消息告诉我们关于合并分支(和父母提交参考)。

某些people(和工具如GitHub)更喜欢强制--no-ff合并以提高git日志的可读性和清晰度。

相关问题