我正在使用最新版本的Git,可用于最新版本的Cygwin。大约一半时间从某个遥控器拉出来时,我收到以下错误:
致命:第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:
有没有人遇到这个问题?如果是这样,你是如何解决它的?
答案 0 :(得分:1)
我还在Windows 7上的Cygwin 1.7.9上观察到了这个问题。不知何故.git/FETCH_HEAD
变得腐败。这种情况发生在通过SSH和同一主机获取的遥控器上。
要获得解决方法,请考虑摘自git pull
documentation:
在默认模式下,
git pull
是git fetch
的简写,后跟git merge FETCH_HEAD
。
为避免阅读FETCH_HEAD
,请明确命名您的分支。例如,假设您正在master
并跟踪origin/master
,请执行以下序列以获得与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";