拉取请求中的Git冲突

15

我有两个分支 - masterdevelop

我在我的develop分支中进行了一些拉取请求。该分支包含5个项目,与 master 中的项目数量相同。

然而,有人在 master 分支中进行了一些提交并进行了push,因此现在它有8个项目。

由于我的拉取请求还没有被批准/合并,每当我尝试更新它,就会收到消息,指出 这个拉取请求无法合并。您需要解决冲突才能进行合并,并要求我执行以下操作:

git fetch origin master
git checkout develop 
git merge FETCH_HEAD
git commit
git push origin HEAD

在我推送提交之后发生这种情况,有时让我感到困惑。后来我意识到它正在要求我重新添加和重新提交另外的3个新项目。这是否意味着我必须确保我的这两个分支之间的项目和内容始终相同?我一直使用 git pull/fetch ,但是否有更好的方法可以确保呢?


不,它要求你合并。你似乎对分支的工作原理感到困惑--请参阅文档中的相关章节(http://git-scm.com/book/zh/v2/Git-分支-分支的新建与合并)。 - remram
@remram 可能我确实有点困惑。但即便如此,为什么要求我将主干合并到开发分支呢?通常情况下我都是反过来的。 - dissidia
如果您在develop分支中合并了master分支,那么GitHub就能够自动将develop分支合并到master分支中。 - remram
@remram 嗯,好的... 但我还是不明白为什么我必须将主分支合并到开发分支。这意味着我需要在主分支和开发分支中拥有相同数量的项目,以避免未来出现这样的冲突吗? - dissidia
你不需要做任何事情。Github会告诉你这些分支是否可以自动合并。如果不能,当时机成熟时,你只需从命令行合并PR,而不是从网站上进行合并即可。 - remram
我们称从主分支合并回开发分支为“回合并”。这将使两个分支同步到一个点,使得在开发分支上的更改可以向上合并到主分支。当有大量开发人员对项目进行同时更改时,这种情况经常发生。 - Richard Jessop
1个回答

20
这意味着GitHub希望将您的PR分支合并到master,但由于存在冲突,无法完成。根据您在问题评论中的讨论,通常最好处理这种情况的方法是在命令行中将您的master分支合并到develop中。这将显示冲突并要求您解决它们。完成并推送该合并后,可以使用GitHub上的绿色按钮将PR合并回master
您也可以简单地将您的deploy分支合并到master(我意识到听起来更明智一些)。在这种情况下,您将绕过PR。您必须关闭未合并的PR,并手动将合并提交推送到master
通过第一种方法,
  1. 您可以通过使用PR在GitHub上合并到主分支,创建更好的审计跟踪记录;
  2. 您的团队有机会在其着陆于master之前审核您的代码;和
  3. 如果您具有自动测试(如Travis CI或CircleCI),检查PR,您还可以测试合并后的代码。

这对我来说有点讲得通,特别是在 PR 分支的情况下,这将与我一直在做的完全不同,我的 develop 分支被合并到 master 中,就像你所提到的那样。 - dissidia
没错。如果你有一个单一的develop分支,定期合并到master,那么最好不要从该分支发起拉取请求。如果你愿意,可以从特定的主题分支向deploy发起拉取请求,然后在准备好移动一组更改时,在命令行上将deploy合并到master - Peeja
这个链接提供了一个很好的概述,介绍如何实现Peeja的合并主分支到开发分支的陈述:https://confluence.atlassian.com/bitbucket/resolve-merge-conflicts-704414003.html - Paul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接