位于Bitbucket远程服务器上的冲突,但本地一切都是最新的。

33

我正在开发一个项目,因此我将一个功能分支推送到远程仓库(使用Atlassian bitbucket),然后开了一个拉取请求。

但是在其中一个文件上,bitbucket显示“MOVED”状态,呈棕色,并显示冲突信息:

冲突:已在源中修改,已在目标中修改。

该文件处于冲突状态。您需要手动解决冲突,然后才能合并此拉取请求。

所以当我输入:

git pull origin my_feature

我收到了这个消息。

已经是最新的版本了。

我该如何解决这个冲突?


问题出在你的分支合并到master上的merge操作(我猜测)。你应该先将origin/master合并到你的分支中并解决冲突(显然,你修改的某个文件已经在master分支中移动了)。一旦解决了这个问题,就可以提交并再次推送你的分支,并重新打开你的拉取请求。 - Frodon
我尝试了,但它也显示已经是最新的版本。 - NI6
1
你运行了 git fetch 吗? - Frodon
是的,但不幸的是它什么也没改变。 - NI6
你可以分享一下你的代码库运行 "git status" 命令之后的结果吗? - Vitalliuss
我有类似的问题。我的问题是我的主分支与源分支断开连接。重新建立连接后,我在本地也看到了冲突。 - undefined
1个回答

59

您需要更新本地的主分支。请按照以下步骤执行:

  • git checkout master
  • git pull origin master
  • git checkout <<您的分支>>
  • git merge master

执行第四个命令后,会出现合并冲突。解决后执行如下命令:

  • git commit

8
在使用 Git 一段时间后,我现在明白了发生了什么。Git pull 并不会将整个仓库的提交拉取下来,而只是你正在使用的分支。要合并另一个分支,你必须检出该分支并拉取它。然后两个分支都将是最新的,并且合并将按预期工作,包括冲突等。Git 是个愚蠢的东西。 - Suncat2000
5
如果 git pull 拉取了所有的分支,那就太糟糕了。这可能会导致你合并还未准备好的分支。 - AlexJ
1
@AlexJ,在提交拉取请求之前(甚至在将更改提交和推送到您的分支之前),一个好的做法是:1.检出主分支并提取它(以便您获取所有更改)2.切换到dev分支并提取它,现在您可以看到其他开发人员所做的更改,您想要保留。3.将更改提交/推送到远程->dev 4.git合并主分支。 - Anu
相反,Git非常聪明,你只需要保持警觉。 - Scott Anderson

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