【问题标题】:Git: Merge Multiple BranchesGit:合并多个分支
【发布时间】:2012-06-21 10:36:04
【问题描述】:

如果这个问题已经在某个地方得到了彻底、明显且可能已经多次回答,我深表歉意;但在搜索了至少一周后,我一直无法找到有关此特定问题的信息。

为了简化我们有 3 个人在一个项目上工作,每个人都有自己的分支,我们会定期将其合并回主干。问题是我们要么发生冲突(试图挑选樱桃),要么它似乎只是覆盖了 master 的所有文件,前 2 个分支与最后一个分支合并,实际上什么都不合并,只是覆盖。

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

主干

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 提供的,但乞丐当然不能选择。

为了简单起见,存储库位于本地网络文件夹而不是任何服务器上。我不知道这是否会影响实现(如果我猜对了它们的用法,我想 push 和 pull 将不会被使用)

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

【问题讨论】:

  • 你会挑选,因为这 3 个贡献者不会合并他们在 master 中的所有提交,还是因为你不知道任何替代方案?
  • @ChristophEberhardt 我不知道任何替代方案。我们都在规定的时间工作,在这些时间里,我们都得到了当前的主干线并在它的不同部分工作。如果我们尝试将它们一一合并回主干,似乎只是用合并分支覆盖合并到的分支。
  • 合并一个分支到master后,解决冲突后是否提交?

标签: git git-gui


【解决方案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,因此您不能简单地将它们推送到 master,因为提交会破坏整个包。

编辑:

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

编辑:

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

【讨论】:

  • 分支在 Git 中很便宜。如果无论如何都合并回 master 分支会有什么危害?
  • @ChristophEberhardt 感谢您的时间和帮助。我们使用本地网络文件夹来保持简单(我在您的第一条评论之前不久通过编辑添加了该文件夹,因此您可能会阅读旧版本)。我假设这些是为了如果您有服务器设置。如果我是对的,请您指导一下什么是有效的本地设置?再次感谢您。
  • @Daemeous 我还能以其他方式帮助你吗?
  • @ChristophEberhardt 抱歉,我按 Enter 键创建了一个新行,但它却发布了评论,我完成了编辑。
  • @Daemeous 对不起,但是如果您没有具体问题,那么在不知道您对 git 的了解以及您不了解的情况下,很难在简短的回答中解释 git 处理不。例如。目前尚不清楚您以哪种方式使用cherry-pick,但我的猜测是您不需要它,通过 git merge -> 解决冲突 -> 全部提交并推送它应该没问题,然后下一个贡献者可以做相同的。再次抱歉,我无法为您提供更多帮助。
猜你喜欢
  • 2021-08-18
  • 2012-04-30
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多