不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。
我如何看待这些差异并将其合并?
不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。
我如何看待这些差异并将其合并?
当前回答
在我的情况下,我得到这个消息时,我按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 commit——modify -m "新消息" 当我使用git push——force-with-lease repo_name branch_name推送更改时 没有问题。
我已经通过移动到commit_sha来修复它,最后提交给origin/master。
git reset --hard commit_sha
警告:在commit 'commit_sha' commit之后,你将丢失所有提交的内容。
你可能会遇到这种情况,只需要从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。
为了更直接地回答最初的问题,您可以检查实际冲突的差异:
git diff HEAD..origin/master
并使用此信息来决定是将源的更改拉到本地回购中,还是将本地更改推到源中。
要查看差异:
我嫉妒他
这将显示两个分支之间的变化或差异。在araxis(我最喜欢的)中,它以文件夹差异样式显示它。显示每个更改的文件。然后,我可以单击一个文件来查看文件中更改的详细信息。