Cygwin和Git:出现"fatal: error in line 1:"错误

4
我正在使用最新版本的Git,该版本适用于最新版本的Cygwin。在从某些远程库拉取时,大约一半的时间会出现以下错误:

fatal: Error in line 1:

完整的跟踪信息如下:
$ GIT_TRACE=2 git pull -v upstream master
trace: exec: 'git-pull' '-v' 'upstream' 'master'
trace: run_command: 'git-pull' '-v' 'upstream' 'master'
trace: built-in: git 'rev-parse' '--git-dir'
trace: built-in: git 'rev-parse' '--is-bare-repository'
trace: built-in: git 'rev-parse' '--show-toplevel'
trace: built-in: git 'ls-files' '-u'
trace: built-in: git 'symbolic-ref' '-q' 'HEAD'
trace: built-in: git 'config' '--bool' 'branch.master.rebase'
trace: built-in: git 'config' '--bool' 'pull.rebase'
trace: built-in: git 'rev-parse' '-q' '--verify' 'HEAD'
trace: built-in: git 'fetch' '-v' '--update-head-ok' 'upstream' 'master'
trace: run_command: 'ssh' 'git@redacted.com' 'git-upload-pack '\''Project/project.git'\'''
trace: run_command: 'rev-list' '--verify-objects' '--stdin' '--not' '--all' '--quiet'
trace: run_command: 'rev-list' '--verify-objects' '--stdin' '--not' '--all'
trace: exec: 'git' 'rev-list' '--verify-objects' '--stdin' '--not' '--all'
trace: built-in: git 'rev-list' '--verify-objects' '--stdin' '--not' '--all'
From redacted.com:Project/project
 * branch            master     -> FETCH_HEAD
trace: built-in: git 'rev-parse' '-q' '--verify' 'HEAD'
trace: built-in: git 'fmt-merge-msg'
fatal: Error in line 1:

有没有人遇到过这个问题?如果遇到了,你是怎么解决的?


这是错误输出的最后一行吗?你试图从哪些远程仓库拉取代码?你是否设置了RSA密钥?提供更多信息将有助于解决问题 :) - Will Buck
这是输出的最后一行。远程是一个GitHub安装。所有的密钥都是好的。不幸的是,这确实是我能提供的所有信息。在msysgit中工作得很好,但我宁愿使用Cygwin。 - BudJB
1个回答

1

我也在Windows 7上的Cygwin 1.7.9上观察到了这个问题。不知何故,.git/FETCH_HEAD会变得损坏。这种情况发生在通过SSH获取远程内容的情况下,也会在同一主机上发生。

为了解决此问题,请考虑从git pull文档中摘录的以下内容:

在默认模式下,git pullgit fetch后跟git merge FETCH_HEAD的简写。

为了避免阅读FETCH_HEAD,请明确命名您的分支。例如,假设您正在跟踪origin/mastermaster,请执行以下序列以获得与git pull相同的效果。

$ git fetch
$ git merge origin/master

我原以为这个问题是偶发的,但最近我一直无法让它成功。

#! /usr/bin/env perl

use strict;
use warnings;

sub usage {
  <<EOUsage;
Usage: $0 [how-many]

  where how-many is a positive integer (default: 100)
EOUsage
}

$0 =~ s!^.*/!!;
my $howmany = @ARGV ? shift : 100;
die usage if @ARGV || $howmany !~ /^ (?!0+$) \d+$/x;

my $bad;
for (1 .. $howmany) {
  unlink ".git/FETCH_HEAD";
  my $output = `git fetch -v 2>&1`;
  die "$0: git fetch exited ", ($? >> 8), ":\n", $output if $?;

  ++$bad unless system("git rev-parse -q --verify FETCH_HEAD") == 0;
}

my $pct = sprintf "%d%%", ($bad/$howmany) * 100;
print "$0: fetches=$howmany, bad=$bad ($pct)\n";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接