Git:合并多个分支

时间:2012-06-19 11:35:34

标签: git git-gui

如果在某个地方得到彻底,明显和很多次的回答,我很抱歉。但在搜索至少一周之后,我一直无法找到有关这个特定问题的信息。

为了简化我们有3个人在一个项目上工作,每个人都有自己的分支,我们经常将它们合并回主干线。问题是我们要么发生冲突(试图挑选),要么只是覆盖了主人的所有文件,前两个分支与最后一个分开合并,实际上没有合并,只是覆盖。

我的问题是(希望)简单:

主干

string test1;
string test2;
string test3;

test1分支

 string test1 = "Dan Branch merged";
 string test2;
 string test3;

test2分支

string test1;
string test2 = "Dave Branch merged";
string test3;

test3分支

string test1;
string test2;
string test3 = "Will Branch merged";

合并所有3个分支时的所需输出:

string test1 = "Dan Branch merged";
string test2 = "Dave Branch merged";
string test3 = "Will Branch merged";

当我尝试合并测试1和2时,我实际得到的是:

自动合并失败;修复冲突,然后提交结果。

  <<<<<<< HEAD
 +        String test1 = "Dan Branch merged";
 +        String test2;
 +        String test3;
  =======
+         String test1;
+         String test2 = "Dave Branch merged.";
+         String test3;
  >>>>>>> test2

我目前正在Windows上使用git-gui(计划在我最终了解git时更改为bash / shell / cli)所以如果有可能的话,如果有任何答案的话,那就太棒了专门针对git-gui,但当然乞丐不能选择。

尝试保持简单,存储库位于本地网络文件夹而不是任何服务器上。我不知道这是否会影响实现(我想如果我猜错了推送和拉动就不会使用了)

目前Git已被降级为存储和浏览旧版本的方法,因为所有合并都是手工完成的。

1 个答案:

答案 0 :(得分:1)

处理代码的方式可能不是处理分布式开发的常规方法。我建议(如果在开发过程中可以访问主干线),可以按照以下步骤进行操作:

git stash     (to put your changes away for the moment)
git pull      (to get the latest commits)
git stash pop (to get back, what was stashed away in the first step)

然后解决你的冲突。这应该不如合并整个分支时那么多。然后:

git commit
git push

重要提示:避免更改分支并使用master。分支更常用于并行开发,而不是每天都要提交。例如。当开始一个新的主要版本的软件时,它会改变很多旧代码或api,这样你就不能简单地将它们推送到掌握,因为提交会使整个软件包不稳定。

编辑:

尊重David的评论:在git中使用分支是没有坏处的,但我有一两个案例,其中未经处理的分支导致混淆,没有经验的git用户很难理解和解决。但是那些处理错误不应该是平常的。

编辑:

事实证明,你确实只有一个本地存储库。在我看来,你最初都有一个局域网存储库。所以,如果你不改变你的基础设施(我不推荐它。另一种选择是http://bitbucket.org并且每个人都有他自己的存储库克隆在他的计算机上)那么(我认为)没有别的办法了三个分支。我强烈建议您阅读像http://www.vogella.com/articles/Git/article.html这样的git教程,以便更改您的基础架构。祝你好运。