不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。
我如何看待这些差异并将其合并?
不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。
我如何看待这些差异并将其合并?
当前回答
当我试图编辑上次提交消息时,我有相同的消息,已经推送提交,使用:git commit——modify -m "新消息" 当我使用git push——force-with-lease repo_name branch_name推送更改时 没有问题。
其他回答
你可能会遇到这种情况,只需要从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。
我更喜欢更方便、更安全的方式。
# copying your commit(s) to separate branch
git checkout <last_sync_commit>
git checkout -b temp
git cherry-pick <last_local_commit>
git checkout master
git reset --soft HEAD~1 # or how many commits you have only on local machine
git stash # safer, can be avoided using hard resetting on the above line
git pull
git cherry-pick <last_local_commit>
# deleting temporary branch
git branch -D temp
要查看差异:
我嫉妒他
这将显示两个分支之间的变化或差异。在araxis(我最喜欢的)中,它以文件夹差异样式显示它。显示每个更改的文件。然后,我可以单击一个文件来查看文件中更改的详细信息。
我已经通过移动到commit_sha来修复它,最后提交给origin/master。
git reset --hard commit_sha
警告:在commit 'commit_sha' commit之后,你将丢失所有提交的内容。
当我试图重设跟踪远程分支的分支的基础时,我发现自己处于这种情况,我试图在master上重设它。在这种情况下,如果您尝试重新建立基础,您很可能会发现您的分支分散了,它可能会造成一个混乱,这不是git nubees!
假设您在my_remote_tracking_branch分支上,这个分支是从master分支出来的
$ git状态 在分支my_remote_tracking_branch上 没有要提交的内容(工作目录清洁)
现在你正试图从主为:
吉特校长
现在就停下来,给自己省点麻烦!相反,使用merge as:
Git 合并大师
是的,您最终会在分支上获得额外的提交。但除非你想要“不发散”的分支,否则这将是一个比重基更流畅的工作流程。有关更详细的解释,请参阅这个博客。
另一方面,如果你的分支只是一个本地分支(即还没有推送到任何远程),你一定要做一个rebase(你的分支在这种情况下不会发散)。
现在,如果你正在阅读这篇文章,因为你已经处于由于这种重基而导致的“发散”场景中,你可以通过使用以下命令回到上一次提交(即在未发散的状态下):
Git重置——hard origin/my_remote_tracking_branch