2012-09-04 13 views
40

Debian'dan (aslında Virtualbox'ta bir Mac üzerinde çalışan ve çalışıyor) yeni bir GIT repo'sunu başlatmaya çalışıyorum:GIT fatal: belirsiz argüman 'HEAD': çalışan ağaçta bilinmeyen bir düzeltme ya da yol yok

[[email protected]:~ $] mkdir test 
[[email protected]:~ $] cd test 
[[email protected]:test $] git init 
Initialized empty Git repository in /home/david/test/.git/ 
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree. 
Use '--' to separate paths from revisions 
[[email protected]:test (master #) $] 

Sorun nedir?

+0

Bu olmamalı ... Git sürümü nedir? Nasıl kuruldu? – CharlesB

+2

Git apt-get aracılığıyla kuruldu ve sürüm 1.7.2.5'tür. – David

+4

Kabuk isteminde bazı git komutları kullanıyormuşsunuz gibi görünüyor - bence hata iletisi buradan geliyor. – ebneter

cevap

20

Diğerleri de belirttiği gibi, bu ileti kabuk isteminizden geliyor. Sorun şu ki, yeni oluşturulan bir havuzda HEAD (.git/HEAD) henüz bulunmayan bir ref işaret ediyor. rev-parse yeterli hata önce elden kontrol etmeden kullanılıyor gibi

% git init test 
Initialized empty shared Git repository in /Users/jhelwig/tmp/test/.git/ 
% cd test 
% cat .git/HEAD 
ref: refs/heads/master 
% ls -l .git/refs/heads 
total 0 
% git rev-parse HEAD 
HEAD 
fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree. 
Use '--' to separate paths from revisions 

görünüyor. İlk taahhüt oluşturulduktan sonra .git/refs/heads biraz farklı görünüyor ve git rev-parse HEAD artık başarısız olmayacak. Benim kabuk istemi geri kalanı (ZSH için wunjo istemi temanın ağır modifiye versiyonu) için Git bilgisini günceller fonksiyonunda

% ls -l .git/refs/heads 
total 4 
-rw------- 1 jhelwig staff 41 Oct 14 16:07 master 
% git rev-parse HEAD 
af0f70f8962f8b88eef679a1854991cb0f337f89 

, bu çevrede almak için aşağıdaki adres:

zgit_info_update() { 
    zgit_info=() 

    local gitdir=$(git rev-parse --git-dir 2>/dev/null) 
    if [ $? -ne 0 ] || [ -z "$gitdir" ]; then 
     return 
    fi 

    # More code ... 
} 
+1

Git'in eski sürümleri (en azından bunun 1.6.4 olduğunu biliyorum.4) 'HEAD' için eşanlamlı olarak' head' kullanmayın. Benim durumumda git bu eski sürümü ile sıkışmış ve 'kafa' yerine benim denemelerimde 'HEAD 'atıfta sorun etrafında olsun başardı. –

2

Jacob Helwig bahseder in his answer o: Bu devir-ayrıştırma benziyor

yeterli hata önce elden

kontrol etmeden kullanılıyor Jeff King (peff) den

Commit 62f162f Git'te git rev-parse sağlamlığını artırmak gerekir 1.9/2.0 (Q1 2014) (commit 1418567 ilave olarak) biz eşleşmeyen durumlarda

(örneğin, "doesnotexist..HEAD") Daha sonra argümanı bir dosya adı olarak ele almak isterdik.
try_difference() bunu doğru yapar ve bu durumda her zaman daralmaz.
Ancak try_parent_shorthand() yanlış hata iletileri, hatta yanlış sonuçlara yol açan unmunges asla:

$ git rev-parse foobar^@ 
foobar 
fatal: ambiguous argument 'foobar': unknown revision or path not in the working tree. 
Use '--' to separate paths from revisions, like this: 
'git <command> [<revision>...] -- [<file>...]' 
5
yeni git proje oluştururken benim terminalde özel bir ekran sahip olduğunda bu sorunu vardı

(Ben benim yol isminden önce şube gösterimi örn .:/current/path). Yapmam gereken tek şey, bu mesajın gitmesini sağlamak için ana şubeme ilk girişimi yapmaktı.

İlgili konular