git git 修改后合并冲突 - "Your branch and 'origin/master' have diverged"

git merge conflict after git amend - "Your branch and 'origin/master' have diverged"

事情是这样的:

  1. 最近提交到远程主机后,我对我的本地存储库做了一个小的微不足道的更改
  2. 我添加 git commit --amend 并留下与 HEAD
  3. 相同的提交消息
  4. 我尝试使用 git push
  5. 将 repo 推送到 master

现在我得到了

On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commit each, respectively.
  (use "git pull" to merge the remote branch into yours)
nothing to commit, working directory clean

我想了解:

  1. 为什么会这样?
  2. 我能做些什么来防止这种情况发生?
  3. 如何在 git 修改后协调 master 与 local?

您更改了现有的推送提交,创建了您自己的版本(因为其内容已更改)

 --x---Y (master: that is the X amended)
    \
     --X (origin/master)

这就是为什么在 master 和 origin/master

之间各有 1 次和 1 次不同的提交

What can I do to prevent this?

不要 "amend" 现有的推送提交(只有本地尚未推送的提交)

How do I reconcile master with local after a git amend?

只需在 origin/master 之上变基,然后推送

git rebase origin/master

 --x--X---Y' (master)
      |
(origin/master)

git push

 --x--X---Y' (master, origin/master)

如果您是修改后唯一从事该项目的人,您可以 运行

git push -f origin master

如果您不是唯一一个从事该项目的人,请小心您所做的事情,因为它正在改写历史。

这是一篇关于修正的好文章:
https://medium.com/@igor_marques/git-basics-adding-more-changes-to-your-last-commit-1629344cb9a8