【问题标题】:git pull always fails, but git fetch/merge are finegit pull 总是失败,但 git fetch/merge 很好
【发布时间】:2015-02-19 23:13:01
【问题描述】:

当我在任何存储库中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

【问题讨论】:

  • 我不确定到底出了什么问题,但请查看git pull 失败后文件FETCH_HEAD(在.git 目录中)的内容。 pull 命令运行 fetch 并带有额外的参数,告诉它在 FETCH_HEAD 中留下痕迹,然后使用这些痕迹运行 git merge。这些痕迹有些愚蠢,导致pull 脚本发出错误的merge 命令。
  • 感谢您的帮助,托雷克。这是我尝试 git pull 后来自两个不同存储库的 FETCH_HEAD 的内容: 1. ecbacbe7d1b15058065d8856328cecba8141b1d0 branch 'master' of github.com:sirspinach/shwangster 2. 206b62d28091d98909947ad32085a15fa463d7f5 not-for-merge branch 'master' of github.com:sirspinach/cs61a-scheme
  • 有趣...文件内容正常,问题一定出在合并头的选择上。看起来tr '\012' ' ' 出错了。

标签: macos git git-merge git-pull


【解决方案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 和第二个-e sed 参数之前和之后的制表符。剪切和粘贴通常会将制表符转换为空格,并且在这里做了。)

我想sed 部分工作正常,而tr 调用发生故障。事实上,看起来无论使用什么tr,都只是简单地吐出012 字符串(总共60 个字符,或三字符组的20 个实例——不知道这是怎么发生的,因为@ 987654334@ 输出是或应该是 40 个字符的 SHA-1)。

如果你的 shell 是 shbash,看看是什么:

$ type tr

打印。如果您使用 csh 变体,which tr 会告诉您它将运行什么。 (我不确定 dash 和 zsh 使用什么。)如果你得到的不是/usr/bin/tr,那可能会解释这个问题。 (如果你得到/usr/bin/tr 看看type sedwhich sed 说什么:这些应该是/usr/bin/sed。)

【讨论】:

  • 非常感谢!原来git一直期待的tr被我很久以前安装的something else替换了。
猜你喜欢
  • 2018-03-05
  • 2020-07-27
  • 2020-01-31
  • 2017-03-28
  • 2011-02-05
  • 1970-01-01
  • 2019-04-11
  • 2016-02-04
  • 1970-01-01
相关资源
最近更新 更多