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

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


当前回答

当我试图编辑上次提交消息时,我有相同的消息,已经推送提交,使用:git commit——modify -m "新消息" 当我使用git push——force-with-lease repo_name branch_name推送更改时 没有问题。

其他回答

以我为例,这是因为我没有解决冲突。

该问题是由运行git pull命令引起的。原产地的变化导致与我的本地回购发生冲突,我解决了这个问题。然而,我并没有犯下这些罪行。此时的解决方案是提交更改(git提交已解析的文件)

如果在解决冲突后还修改了一些文件,git status命令将把本地修改显示为非分段本地修改,并将合并解析显示为分段本地修改。这个问题可以通过git commit从merge中提交更改来解决,然后像往常一样添加并提交未分阶段的更改(例如通过git commit -a)。

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

git reset --hard origin/master

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

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

我知道这里有很多答案,但我认为git reset -soft HEAD~1值得注意,因为它让你在解决发散状态时,在最后一次本地(未推送)提交中保留更改。我认为这是一个比使用rebase的pull更通用的解决方案,因为本地提交可以被审查,甚至可以移动到另一个分支。

关键是使用——柔和,而不是严厉——强硬。如果提交次数超过1次,则更改HEAD~x应该可以工作。这里是解决我的情况的所有步骤(我有1个本地提交和8个远程提交):

1) git reset—soft HEAD~1来撤销本地提交。对于接下来的步骤,我使用了SourceTree中的接口,但我认为以下命令也可以工作:

2) git从1)到stash的变化。现在所有的变化都是安全的,不再有分歧。

3) git拉取远程更改。

4) git stash pop或git stash apply应用上次存储的更改,如果需要,随后是一个新的提交。当想要丢弃本地提交中的更改时,这一步是可选的,还有2)。另外,当想要提交到另一个分支时,这一步应该在切换到所需的分支后完成。

我相信这应该对我有帮助:

git reset --hard origin/master

但事实并非如此。不知怎的,我得到了同样的消息&当我从远程分支中提取更改时,冲突就发生了。因为我确定我根本不需要我现有的本地分支&我只需要一个远程主分支的副本,因此我想出了这个解决方案:

签出到一个新的分支,例如,git Checkout -b placeholder-branch。注意:该分支可以稍后删除。 git分支-D master,我这样做是因为我确定我的本地分支被搞砸了&我不需要这个。我需要远程实例的新副本。 Git签出-跟踪原点/master &你完成了;现在你可以使用git branch -D删除占位符分支

当我试图编辑上次提交消息时,我有相同的消息,已经推送提交,使用:git commit——modify -m "新消息" 当我使用git push——force-with-lease repo_name branch_name推送更改时 没有问题。