不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。
我如何看待这些差异并将其合并?
不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。
我如何看待这些差异并将其合并?
当前回答
当我试图重设跟踪远程分支的分支的基础时,我发现自己处于这种情况,我试图在master上重设它。在这种情况下,如果您尝试重新建立基础,您很可能会发现您的分支分散了,它可能会造成一个混乱,这不是git nubees!
假设您在my_remote_tracking_branch分支上,这个分支是从master分支出来的
$ git状态 在分支my_remote_tracking_branch上 没有要提交的内容(工作目录清洁)
现在你正试图从主为:
吉特校长
现在就停下来,给自己省点麻烦!相反,使用merge as:
Git 合并大师
是的,您最终会在分支上获得额外的提交。但除非你想要“不发散”的分支,否则这将是一个比重基更流畅的工作流程。有关更详细的解释,请参阅这个博客。
另一方面,如果你的分支只是一个本地分支(即还没有推送到任何远程),你一定要做一个rebase(你的分支在这种情况下不会发散)。
现在,如果你正在阅读这篇文章,因为你已经处于由于这种重基而导致的“发散”场景中,你可以通过使用以下命令回到上一次提交(即在未发散的状态下):
Git重置——hard origin/my_remote_tracking_branch
其他回答
Git重置——soft origin/my_remote_tracking_branch
This way you will not loose your local changes
当我试图编辑上次提交消息时,我有相同的消息,已经推送提交,使用:git commit——modify -m "新消息" 当我使用git push——force-with-lease repo_name branch_name推送更改时 没有问题。
为了更直接地回答最初的问题,您可以检查实际冲突的差异:
git diff HEAD..origin/master
并使用此信息来决定是将源的更改拉到本地回购中,还是将本地更改推到源中。
当我基于分支a创建一个分支时遇到了这个问题
git checkout -b a
然后我将分支a的起始流设置为分支B的原点
git branch -u origin/B
然后我得到了上面的错误消息。
对我来说,解决这个问题的一个方法是,
删除分支a 创建一个新的分支b
git checkout -b b origin/B
在我的例子中,这里是我所做的导致分歧的消息:我做了git push,但后来做了git commit——amend,以向commit消息中添加一些东西。然后我又做了另一次提交。
所以在我的例子中,这仅仅意味着原点/主节点已经过时了。因为我知道没有其他人在触摸原点/master,修复是微不足道的:git push -f(其中-f表示力)