【发布时间】: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