2013-03-04 167 views
4

我在Github上有一个git repo,在我的web服务器上有一个git repo。每当我做git pull origin master得到在Github上进行的更新,它说Your branch is ahead of 'origin/master' by 6 commits.有趣的是,每当我从Github上做出新的更改时,数字就会增加2!我也必须每次“合并”。Git说我提前2次提交

这是在我更新我的web服务器上的.gitignore并删除了两个我忽略的文件后开始的。我更新了.gitignore,并删除了我的Github回购库中的两个文件。

Git高手,为什么会发生这种情况?我该如何纠正它?

回答

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仓库中的某些东西,那么你需要决定是否要保留它或删除它。如果你想摆脱它,使用相同的git reset origin/master。如果您想保留它,您可能需要git rebase origin/master将其拉到历史记录的顶端,然后将其推送到服务器。