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

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


当前回答

在我的情况下,我已经将更改推到origin/master,然后意识到我不应该这样做:-(这是复杂的事实,局部更改是在子树中。所以我回到了“坏的”本地更改之前的最后一个好的提交(使用SourceTree),然后我得到了“分歧消息”。

在本地修复了我的混乱之后(细节在这里不重要),我想“回到”远程源/主分支,这样它就会再次与本地主同步。我的解决方案是:

git push origin master -f

注意-f (force)开关。这删除了错误地推送到origin/master的“坏更改”,现在本地和远程分支是同步的。

请记住,这是一个潜在的破坏性操作,因此只有在您100%确定及时“移回”远程主机是OK的情况下才执行该操作。

其他回答

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

git reset --hard origin/master

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

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

在我的情况下,我已经将更改推到origin/master,然后意识到我不应该这样做:-(这是复杂的事实,局部更改是在子树中。所以我回到了“坏的”本地更改之前的最后一个好的提交(使用SourceTree),然后我得到了“分歧消息”。

在本地修复了我的混乱之后(细节在这里不重要),我想“回到”远程源/主分支,这样它就会再次与本地主同步。我的解决方案是:

git push origin master -f

注意-f (force)开关。这删除了错误地推送到origin/master的“坏更改”,现在本地和远程分支是同步的。

请记住,这是一个潜在的破坏性操作,因此只有在您100%确定及时“移回”远程主机是OK的情况下才执行该操作。

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

将123替换为分支偏离原点的提交数。

git reset HEAD~123 && git reset && git checkout . && git clean -fd && git pull

我更喜欢更方便、更安全的方式。

# 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