不知何故,我的主分支和我的起源/主分支分道扬镳了。 我不希望它们发散。

我如何看待这些差异并将其合并?


当前回答

我有这个问题,即使在阅读了上面的回复后,我也不知道是什么导致了它。我的解决办法是做

git reset --hard origin/master

然后,这只是将我的(本地)master副本(我认为是搞砸了)重置到正确的点,由(远程)origin/master表示。

警告:您将丢失所有尚未推送到原点/主节点的更改。

其他回答

为了更直接地回答最初的问题,您可以检查实际冲突的差异:

git diff HEAD..origin/master

并使用此信息来决定是将源的更改拉到本地回购中,还是将本地更改推到源中。

我有这个问题,即使在阅读了上面的回复后,我也不知道是什么导致了它。我的解决办法是做

git reset --hard origin/master

然后,这只是将我的(本地)master副本(我认为是搞砸了)重置到正确的点,由(远程)origin/master表示。

警告:您将丢失所有尚未推送到原点/主节点的更改。

git pull --rebase origin/master 

是一个在大多数情况下可以帮助您的命令。

编辑:从源/主节点中提取提交,并将您的更改应用于新提取的分支历史记录。

当我试图重设跟踪远程分支的分支的基础时,我发现自己处于这种情况,我试图在master上重设它。在这种情况下,如果您尝试重新建立基础,您很可能会发现您的分支分散了,它可能会造成一个混乱,这不是git nubees!

假设您在my_remote_tracking_branch分支上,这个分支是从master分支出来的

$ git状态 在分支my_remote_tracking_branch上 没有要提交的内容(工作目录清洁)

现在你正试图从主为:

吉特校长

现在就停下来,给自己省点麻烦!相反,使用merge as:

Git 合并大师

是的,您最终会在分支上获得额外的提交。但除非你想要“不发散”的分支,否则这将是一个比重基更流畅的工作流程。有关更详细的解释,请参阅这个博客。

另一方面,如果你的分支只是一个本地分支(即还没有推送到任何远程),你一定要做一个rebase(你的分支在这种情况下不会发散)。

现在,如果你正在阅读这篇文章,因为你已经处于由于这种重基而导致的“发散”场景中,你可以通过使用以下命令回到上一次提交(即在未发散的状态下):

Git重置——hard origin/my_remote_tracking_branch

要查看差异:

我嫉妒他

这将显示两个分支之间的变化或差异。在araxis(我最喜欢的)中,它以文件夹差异样式显示它。显示每个更改的文件。然后,我可以单击一个文件来查看文件中更改的详细信息。