当我在任何存储库中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 :(得分:1)
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
之前和之后的选项卡以及sed的第二个-e
参数。剪切和粘贴通常会将标签转换为空格,并在此处执行。)
我认为sed
部分正常工作,tr
调用失败。事实上,它看起来像正在使用的任何tr
,只是吐出012
字符串(总共60个字符,或三个字符组的20个实例 - 不知道这是怎么回事假设sed
输出是或应该是40个字符的SHA-1。
如果您的shell为sh
或bash
,请参阅:
$ type tr
打印。如果您使用csh变体,which tr
将显示它将运行的内容。 (我不确定在破折号和zsh中使用什么。)如果你得到的不是/usr/bin/tr
,那可能解释了这个问题。 (如果你得到/usr/bin/tr
,请看type sed
或which sed
说的内容:这些应该是/usr/bin/sed
。)