[英]git pull always fails, but git fetch/merge are fine
当我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
Kaz在评论中指出了另一个(几乎完全重复)的问题的一个线索,即当pyenv
从$PATH
取出时,问题就消失了。
这是Pull脚本中的一部分,它使用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
部分工作正常,并且tr
调用失败了。 实际上,看起来无论使用什么tr
,都只是吐出012
字符串(总共60个字符,或三个字符组的20个实例-不知道sed
输出是怎么回事,或者应该是40个字符的SHA-1)。
如果您的外壳是sh
或bash
,请参阅以下内容:
$ type tr
打印。 如果使用csh变体,则which tr
将向您显示它将运行的内容。 (我不确定立即将什么用于破折号和zsh。)如果您获得的不是/usr/bin/tr
,则可以解释问题。 (如果确实得到了/usr/bin/tr
请查看type sed
或which sed
表示:这些应该是/usr/bin/sed
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.