繁体   English   中英

git pull总是失败,但是git fetch / merge很好

[英]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 fetchgit 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)。

如果您的外壳是shbash ,请参阅以下内容:

$ type tr

打印。 如果使用csh变体,则which tr将向您显示它将运行的内容。 (我不确定立即将什么用于破折号和zsh。)如果您获得的不是/usr/bin/tr ,则可以解释问题。 (如果确实得到了/usr/bin/tr请查看type sedwhich sed表示:这些应该是/usr/bin/sed 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM