Git说我提前2次提前

时间:2013-03-04 23:48:22

标签: git gitignore

我在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大师,为什么会这样?我该如何纠正?

1 个答案:

答案 0 :(得分:9)

这种情况正在发生,因为您不断创建远程不存在的本地合并提交。 git pull的默认行为是合并新的更改,并且您继续这样做,但您从未推送过合并。你的历史可能看起来像这样:

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

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

此处的解决方案是弄清楚您希望如何处理您拥有的本地提交。当您说您更新了服务器和github repo时,您是否单独更新了它们?如果是这样,您创建了两个代表相同更改的不同提交。在这种情况下,您只需git reset origin/master即可摆脱本地合并。

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