Я также наблюдал эту проблему на Cygwin 1.7.9 на Windows 7. Каким-то образом .git/FETCH_HEAD
становится поврежденным.Это происходит с удаленными устройствами, которые выбираются через SSH, а также на том же хосте.
В качестве обходного пути рассмотрим выдержку из git pull
документации :
В режиме по умолчанию 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";