由于 Git 中不相关的冲突,无法提取原始开发人员
Posted
技术标签:
【中文标题】由于 Git 中不相关的冲突,无法提取原始开发人员【英文标题】:Cannot pull origin dev due to unrelated conflict in Git 【发布时间】:2021-08-01 07:41:12 【问题描述】:我从 origin 拉出一个分支(比如说 issue-100)进行审查,审查后我切换到本地 dev 分支而不修改这个 issue-100 分支。这个分支有一些冲突,但我没有碰它,只是在从原点拉出 dev 分支后创建了一个新分支。但是,有趣的是,Git 给出了“自动合并失败;修复冲突然后提交结果”。消息。我只是按照以下步骤操作:
git checkout dev
git pull origin dev
--> gives error, then I abort merging in IntelliJ
git branch
git branch -D issue-100
git checkout dev
git pull origin dev
--> gives error, then I abort merging in IntelliJ
所以,我没有将 issue-100 推送到原点,但它给出了错误。我该如何解决这个问题?
【问题讨论】:
git status
的输出是什么?请把它添加到问题中。
好的...除了需要 git 状态,只是一个问题:您的本地分支和删除 dev
分支是否存在分歧?具体来说,您的本地dev
中是否存在远程dev
中没有的修订?
是的,有些消息表明存在分歧。那么,我应该删除本地开发并从源拉取吗?
@Jasmine 请问你为什么要中止合并?看起来您在 dev
分支中有一些在 origin/dev 中不存在的提交,当您拉取时,传入的提交与现有的(本地)提交冲突
你说得对,但我实际上并没有做任何更改,原因是通过拉到我的本地来审查一个分支。因此,我认为删除和拉取 dev 分支会有任何问题,因为我没有推送更新。有什么想法吗?
【参考方案1】:
由于您的本地开发人员和远程开发人员之间存在这种差异,因此出现了冲突。如果本地开发应该和远程开发一样,你应该把分支放在那里:
git checkout dev
git reset --hard origin/dev # before running this, make sure there are no pending changes laying aroind your working tree as they would be lost
现在本地开发和远程开发完全一样(内容和历史)。一切都应该恢复正常了。
我脑子里有个问题,为什么人们应该不使用共享远程分支的本地副本,但它比你的问题更广泛,我碰巧持有这样的观点违背常识(我认为人们不应该保留远程共享分支的本地副本,但.....这只是我的观点)。
【讨论】:
这也可以。喜欢git branch -D dev; git checkout -b dev origin/dev
或者:git branch -f dev origin/dev
(只要您不在开发人员中就可以使用)。
这听起来很对......唯一的事情是没有必要做第一次结帐创建一个新的分支。您可以通过 git checkout --detach
与开发人员断开。
它强制 git 将分支指针 dev
(换句话说,分支)移动到 origin/dev
指向的修订版。
他们都很好。只要你理解你正在运行的每一个命令(我的方式,你的方式),就可以了。土豆,土豆。这是 git 的奇迹之一......它在实现相同目标的方式方面非常灵活。以上是关于由于 Git 中不相关的冲突,无法提取原始开发人员的主要内容,如果未能解决你的问题,请参考以下文章