我在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大师,为什么会这样?我该如何纠正?
答案 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
将其拉到历史记录的最前面,然后将其推送到服务器。