如何在Git中合并分支到分支开发的特性



我是Git的新手,我有一个简单的问题

虽然这个问题在论坛上被问了很多次,但我想把我的问题限制在以下场景

1)  Feature A  (Files A, B and C were modified) cut from 'develop'
2)  Feature B  (Files A and D were modified) cut from 'develop'

功能A已成功合并到分支'develop'中

现在的问题是,我们应该遵循什么方法来合并'Feature B'到分支'develop'

我们是否应该拉出'develop'的最新版本并合并'feature b'的更改(或)还有什么其他最好的方法可以将"功能b"合并到"开发"中,从而使"文件A"拥有所有的更改?

假设您不会在合并/重构之间发生冲突,并且为了简单起见,您将在本地工作(没有提取/拉取/推入)。

基本上有两种处理方法。合并或重基。两者得到相同的结果。你的决定取决于你的工作策略。

你可以合并:

                     //      C3-C4
git checkout develop //     /     
git merge featureB   // C1-C2--C5--C6

或者你可以重新设置:

                       //      C3-C4
git checkout featureB  //     /
git rebase develop     // C1-C2--C5--C3'--C4'

提交C6C4'的代码相同

如果你使用"合并"的策略,你可以在GUI(例如gitk)中看到你正在快速完成的不同特性。

如果你使用" rebase "策略,当你使用git log

这样的命令时,你可以更容易地遵循项目的演变。

如果您独自在FeatureB分支上工作,则pull --rebase develop是最佳实践:您在FeatureA之上重播FeatureB更改。(以及后面的git push --force).

如果您是多个开发人员在FeatureB上工作,那么必须在合并FeatureB之前将develop合并到FeatureB

在这两种情况下,想法是一样的:在合并回develop之前,在本地测试两个功能的集成(pull或rebase)。

不要先合并到develop,"希望"结果(在develop上)是"足够好"。

最新更新