【问题标题】:How to resolve conflict with local branch and master?如何解决与本地分支和主控的冲突?
【发布时间】:2021-06-11 21:39:43
【问题描述】:

我知道这个问题已经被问过很多次,但我遇到了一个奇怪的问题,我无法在网上找到答案。

我已经创建了一个分支并决定打开一个 PR。问题是 Bitbucket 抱怨存在冲突,我需要先手动解决它们。

所以我在当前的功能分支中运行了git pull origin develop。我开始手动解决冲突,但后来我意识到我写的一些代码已经消失了。一个简单的例子是我对一个函数进行了更改,以便该函数接受一个参数。但是在运行git pull origin develop 之后,函数调用保持不变(即somefunction(someParameter)),但函数定义回到export const someFunction() 而不是export const someFunction(someParameter)

我也尝试过运行git pull -s recursive -X ours origin develop,但这并没有解决问题。

我在这里做错了什么?我希望我的功能分支上的所有代码都是开发应该有的代码。是否可以在 git pull origin develop 期间完全覆盖开发中的任何更改?

我可能还应该提到,开发的更改只能通过 PR 进行,所以我不能强行推动它。

我唯一的临时解决方案是将我的目录(在我的功能分支上)的所有内容复制到一个临时目录,然后签出开发,然后签出到一个新分支,然后删除目录中的内容并粘贴到它是临时目录中的内容。显然,我想知道是否有其他方法可行,但我想我现在就这样做。

【问题讨论】:

  • 您的问题主题提及master,但您的问题正文仅提及develop。我个人建议完全避免 git pull:它运行git fetch,然后运行第二个Git 命令。 second 命令是所有悲伤和痛苦的所在。我认为最好使用明确的第二个命令,这样您就可以更好地控制所有内容并准确了解您在做什么。同时,您可能想看看我最近的长答案here,作为合并的背景。
  • 不过,基于git pull -s recursive -X ours origin develop,我怀疑您可能将git pull 作为第二个命令运行git rebase。变基的-X ours 选项意味着扔掉我的代码,所以这会直接导致你的问题。这可能不是问题——我做了很多假设——但如果你说我运行git fetch,然后运行git rebase然后运行git merge 我可以更确定。

标签: git


【解决方案1】:

我认为你做错了步骤。检查此链接What happens when I do git pull origin master in the develop branch?。基本上,当您执行git pull origin develop 时,您会将开发分支拉到您的功能分支,我认为这不应该是解决冲突的方法。

有两种方法可以解决这个问题。

  1. 如果您使用的是 github,请提出 PR。然后它应该会显示冲突,您应该能够解决它。

  2. 如果你想在本地解决它。结帐到您的develop 分支并执行

git pull

在此结帐后,您的功能分支并将develop 分支合并到您的功能分支

git merge develop

然后你应该能够解决你的冲突,这不应该从你的功能分支中删除任何代码(除非它是从开发分支中删除的东西)

【讨论】:

  • 我的本地版本 develop 是最新的远程版本,所以这不起作用。此外,将开发拉入我的功能分支正是我需要做的。然后我必须解决冲突,然后推回远程/功能分支,然后才能将功能分支合并到开发中。
  • @MikeK 我在这里的建议是,在您提出 PR 将 feature/branch 合并到 develop 之前,将最新的 develop 合并到您的 feature/branch 中。在第一步中,您应该能够手动解决冲突。希望我的观点很清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-19
  • 2019-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多