2014-12-21 45 views
0

當我git pull在任何存儲庫,我總是得到以下合併錯誤:混帳拉總是失敗,但混帳讀取/合併的罰款

aetherboard:shwangster shwangster$ git pull -v 
From github.com:sirspinach/shwangster 
= [up to date]  master  -> origin/master 
merge: 012012012012012012012012012012012012012012012012012012012012 - not 
something we can merge 

在另一方面,git fetch和像一個魅力git merge origin/master工作。所以我已經能夠解決這個問題一段時間了。不過,我需要今天更新brew,同樣的錯誤也阻止了我這樣做。

這是brew update的輸出,它顯示了git再次嘗試與神祕的0120120120120...合併。

aetherboard:gitrepos shwangster$ brew update 
merge: 012012012012012012012012012012012012012012012012012012012012 - not 
something we can merge 
Error: Failure while executing: git pull -q origin refs/heads/master:refs/remotes/origin/master 
+0

我不知道什麼是錯的,但看看文件'FETCH_HEAD'的內容(在'git的'git pull'失敗後的''目錄)。 'pull'命令運行帶有額外參數的'fetch',告訴它在'FETCH_HEAD'中留下痕跡,然後使用這些跟蹤來運行'git merge'。這些痕跡有些愚蠢,導致'pull'腳本發出錯誤的「合併」命令。 – torek

+0

謝謝你的幫助,torek。下面是FETCH_HEAD'的'內容從兩個不同的倉庫後,我試圖混帳拉: 1'ecbacbe7d1b15058065d8856328cecba8141b1d0 \t \t分支github.com的「主人」:sirspinach/shwangster' 2.'206b62d28091d98909947ad32085a15fa463d7f5 \t不換合併\t github.com分支'主':sirspinach/cs61a-scheme' – protagonist

+0

完全相同的副本:http://stackoverflow.com/questions/25271075/git-pull-always-returns-not-something-we-can-merge – Kaz

回答

1

有一個在其他(幾乎是完全相同的副本)疑問,卡茲在註釋中提到的線索,這個問題就走了,當pyenv取出的$PATH

下面是拉腳本,需要的FETCH_HEAD跟蹤並把它變成一個參數git merge位(或git rebase做墊底拉時):

merge_head=$(sed -e '/ not-for-merge /d' \ 
     -e 's/ .*//' "$GIT_DIR"/FETCH_HEAD | \ 
     tr '\012' ' ') 

(順便說一句,請注意這些之前和not-for-merge後,並在第二-e參數sed的標籤。剪切和粘貼通常會把tab變成空格,並在這裏做了。)

我想象sed部分是否正常工作,並與發生故障10調用。實際上,它看起來好像正在使用任何tr,它只是簡單地將012字符串(總共60個字符或三個字符組的20個實例)分開 - 不知道sed輸出是如何發生的,或者應該是一個40個字符的SHA-1)。

如果你的shell是shbash,看到什麼:

$ type tr 

打印。如果你使用csh變種,which tr會告訴你它會運行什麼。 (我不確定手邊用什麼來設定短跑和zsh。)如果你得到/usr/bin/tr以外的東西,那可能會解釋這個問題。 (如果你得到/usr/bin/tr看看type sedwhich sed說:這些應該是/usr/bin/sed

+0

非常感謝!事實證明,git所期待的'tr'被我很久以前安裝的[其他](https://github.com/itsnauman/termrule)取代。 – protagonist