2012-06-19 262 views
4

我很抱歉,如果这已被彻底,明确和多次回答,因为它可能已经有;但是我至少搜索了一周后一直无法找到关于这个特定问题的信息。Git:合并多个分支

为了简化我们有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贵(与改变的庆典/壳/ CLI时,我终于得到了我周围的git头的计划),所以如果可能的话,将会是很大的如果有任何答案是专门为git-gui提供的,但当然乞丐不能是选择器。

试图让事情变得简单,存储库位于本地网络文件夹,而不是任何服务器。我不知道这是否会影响实现(我想如果我正确地猜测了它们的使用,推拉将不会被使用)

当前Git已被降级为只是一种存储和浏览旧版本的方法因为所有的合并都是通过手工完成的。

+0

你是否挑选樱桃,因为3个贡献者不会合并他们在主人提交的所有提交,还是因为你不知道任何替代它? –

+0

@ChristophEberhardt我不知道任何替代品。我们都在规定的时间内工作,在这段时间内,我们都会获得当前的主干线,并在其中的不同部分工作。 如果我们试图将它们全部重新合并到master trunk中,它似乎只是用合并分支覆盖合并分支。 – Daemeous

+0

将分支合并到master后,您是否在解决冲突后提交? –

回答

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 

重要:避免改变对主分支和工作。分支机构更常用于并行开发事物,而不是每天都承诺掌握。例如。当开始一个新的主要版本的软件时,它会改变很多旧的代码或API,所以你不能简单地将它们推送给主,因为提交会使整个软件包不稳定。

编辑:

要honorate大卫的评论:这是在使用的Git分支没有坏处,但我有一个或两个情况下,如果unproperly处理分支导致混乱,是一个没有经验的Git用户都很难到理解和解决。但是,那些处理错误不应该是平常的。

编辑:

事实证明你确实只有一个产品总数本地仓库。在我看来,你首先需要一个LAN存储库。所以如果你不改变你的基础设施(我不推荐它,另一种方案是http://bitbucket.org,并且每个人在他的电脑上都有自己的仓库克隆),那么我认为在拥有三个分支的时候没有其他办法。我强烈建议你,你读了一个像http://www.vogella.com/articles/Git/article.html这样的git教程,以改变你的基础设施。祝你好运。

+0

分支在Git中很便宜。无论如何,如果将它们全部合并回主,分支有什么危害? –

+0

@ChristophEberhardt感谢您的时间和帮助。我们使用本地网络文件夹来保持简单(我在第一次评论前不久通过编辑补充说,所以您可能会阅读旧版本)。我假设这些是为了如果你有一个服务器设置。如果我是对的,你可以请指导一下什么是有效的本地设置?再一次,谢谢你。 – Daemeous

+0

@Daemeous我可以以任何其他方式帮助你吗? –