4

我在 Github 上有一个 git repo,在我的 Web 服务器上有一个 git repo。每当我git pull origin master在 Github 上获取更新时,它都会说Your branch is ahead of 'origin/master' by 6 commits.有趣的是,每次我从 Github 拉出新的更改时,数字都会增加 2!我也必须每次都“合并”。

这是在我更新了我的网络服务器上的 .gitignore 并删除了两个我忽略的文件之后开始的。我更新了 .gitignore 并删除了我的 Github 存储库中的两个文件。

Git大师,为什么会这样?我该如何纠正?

4

1 回答 1

10

发生这种情况是因为您不断创建远程不存在的本地合并提交。的默认行为git pull是合并新的更改,你一直这样做,但你从来没有推动你的合并。您的历史记录可能如下所示:

                    o - [master]
                   /|
[origin/master] - o o
                  |/|
                  o o
                  |/|
                  o o
                  |/|
                  o o
                  |/|
                  o o
                  |/
                  o
                  |
                  o

查看所有这些合并提交?每次运行时,git pull您都会创建一个新的。

这里的解决方案是弄清楚你想如何处理你拥有的本地提交。当您说您更新了服务器和 github 存储库时,您是否独立更新了它们?如果是这样,您创建了两个表示相同更改的不同提交。在这种情况下,您可以git reset origin/master摆脱本地合并。

另一方面,如果您的本地提交实际上并不代表 github 存储库中的内容,那么您需要决定是保留它还是删除它。如果您想摆脱它,请使用相同的git reset origin/master. 如果你想保留它,你可能想把git rebase origin/master它拉到你的历史记录的顶端,然后把它推到服务器上。

于 2013-03-04T23:53:20.957 回答