2014-12-21 20 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