2013-03-04 117 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將其拉到歷史記錄的頂端,然後將其推送到服務器。