17

这就是发生的事情:

  1. 在最近提交到远程主机后,我对本地仓库进行了一些小改动
  2. 我添加git commit --amend并留下与 HEAD 相同的提交消息
  3. 我尝试推动回购以掌握git push

现在我得到了

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?
4

2 回答 2

21

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

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

这就是为什么您在 master 和 origin/master 之间分别有 1 和 1 个不同的提交

我能做些什么来防止这种情况发生?

不要“修改”现有的推送提交(仅限本地尚未推送的提交)

git修改后如何协调master和local?

只需在 origin/master 之上重新设置基础,然后推送

git rebase origin/master

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

git push

 --x--X---Y' (master, origin/master)
于 2017-04-08T05:16:23.157 回答
2

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

git push -f origin master

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

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

于 2020-02-20T10:25:52.230 回答