不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。
我如何看待这些差异并将其合并?
不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。
我如何看待这些差异并将其合并?
当前回答
以我为例,这是因为我没有解决冲突。
该问题是由运行git pull命令引起的。原产地的变化导致与我的本地回购发生冲突,我解决了这个问题。然而,我并没有犯下这些罪行。此时的解决方案是提交更改(git提交已解析的文件)
如果在解决冲突后还修改了一些文件,git status命令将把本地修改显示为非分段本地修改,并将合并解析显示为分段本地修改。这个问题可以通过git commit从merge中提交更改来解决,然后像往常一样添加并提交未分阶段的更改(例如通过git commit -a)。
其他回答
我有这个问题,即使在阅读了上面的回复后,我也不知道是什么导致了它。我的解决办法是做
git reset --hard origin/master
然后,这只是将我的(本地)master副本(我认为是搞砸了)重置到正确的点,由(远程)origin/master表示。
警告:您将丢失所有尚未推送到原点/主节点的更改。
在我的例子中,这里是我所做的导致分歧的消息:我做了git push,但后来做了git commit——amend,以向commit消息中添加一些东西。然后我又做了另一次提交。
所以在我的例子中,这仅仅意味着原点/主节点已经过时了。因为我知道没有其他人在触摸原点/master,修复是微不足道的:git push -f(其中-f表示力)
你可能会遇到这种情况,只需要从remote中获取1个历史记录:
$ git pull --depth=1
fatal: refusing to merge unrelated histories
$ git status
Your branch and 'origin/main' have diverged,
and have 1 and 1 different commits each, respectively.
根据上面的回答,会导致两个分支分流到不同的“线”,所以Git认为这是不相关的历史。
---a---b---main
\ \
x x x x diverged, cannot be merged anymore
\ \
---?---?---?---c(origin/main)
最后,简单的解决方案是:git重置-硬的origin/main,如果你不关心本地的变化,否则你将失去所有的工作。
或者尝试git pull——depth=2。
在我的情况下,我得到这个消息时,我按X。1从分支B提交到它的远程跟踪分支remote_B。然后在我的本地存储库,我做了更改,并将其修改为相同的提交ie。X ver.2。
现在我们在远程repo上提交xver1,并提交xver。2在本地。 然后git会警告你
您的本地分支和remote_分别有1个和1个不同的提交
要解决这个问题,你有两个选择:
1.从远程跟踪分支提取变更。
git reset --hard HEAD
git checkout --track remoteRepoName/branch_name
2.强制将修改后的提交推到远程回购。 (仅建议在推X ver1提交后远程回购没有被任何人拉)
git push -f remote_repo_name remote_branch_name
为了更直接地回答最初的问题,您可以检查实际冲突的差异:
git diff HEAD..origin/master
并使用此信息来决定是将源的更改拉到本地回购中,还是将本地更改推到源中。