Bir Uzak depo eklemeye çalışırken "ölümcül: Git deposu değil" alma


439

Bu eğiticiyi izleyerek kendimi Git'e tanıtıyorum:

Yerel makineme repo eklenene kadar her şey düzgün çalışıyor:

git remote add nfsn ssh://USERNAME@NFSNSERVER/home/private/git/REPONAME.git

(USERNAME, NFSNSERVER ve REPOAME öğelerini doğru adlarla değiştirdikten sonra) Hatayı alıyorum:

fatal: Not a git repository (or any of the parent directories): .git

Bu adımı atlamama yardımcı olabilir misiniz?


2
git initancak alt dizinlerinizin hiçbirinin kendi .gitklasörü olmadığından emin olun
James Oravec

Yanıtlar:


908

Bu uzaktan kumandanın ekleneceği yerel bir Git deposunu başlattınız mı?

Yerel dizininizde bir .gitklasör var mı?

Deneyin git init.


2
Bu adımı zaten yapmıştım, ancak motor sahası kurulumunu motor sahası kurulumunu yaptıktan sonra tekrar yapmak zorunda kaldım.
AVProgrammer

3
Benim .gitklasör kayboldu. Mi git initsonra depo klasörü silin ve aynı git clone .... Tek yapmam gereken birpull
Francisco Corrales Morales

3
@FranciscoCorralesMorales .gitklasörünüz kaybolduysa, git inityeni bir klasör oluşturmak için tekrar çalışabilirsiniz . Bir uzaktan kumandayı yine de çekebilmeniz için yeniden eklemeniz gerekir.

3
Yerel sistemden değişiklik gönderirken aynı hatayı alıyordum. Git init'i denedim ve işe yaradı. Teşekkürler!
rbashish

6
benim .git var ve ben zaten git init yapmıştı ama hata alıyorumjalal@klein:~/computer_vision/py-faster-rcnn$ git add -A fatal: Not a git repository: caffe-fast-rcnn/../.git/modules/caffe-fast-rcnn
Mona Jalal

85

Geçerli çalışma dizininiz Git deposunda olmadığında Git komutunu kullanmaya çalışırsanız bu hatayı alırsınız. Çünkü Git, varsayılan olarak, "Git proje dizininde olmadıkça git günlüğü göstermez" ifadesine.git işaret ettiği gibi , varsayılan olarak bir depo dizini (proje kökünün içinde mi?) Arayacaktır :

Göre resmi Linux Kernel Git belgelerine , GIT_DIRbir için görünüme [bir ortam değişkeni] kümesidir .git(? Geçerli çalışma dizini) dizine varsayılan olarak:

Eğer GIT_DIRortam değişkeni sonra ayarlanır varsayılan yerine kullanmak için bir yol belirler .gitdeponun tabanı için.

Ya cddepoya / çalışma kopyasına girmeniz ya da ilk etapta bir havuzu başlatmamış ya da kopyalamamış olursunuz, bu durumda repoyu yerleştirmek istediğiniz dizinde bir repo başlatmanız gerekir:

git init

veya bir havuzu klonlama

git clone <remote-url>
cd <repository>

13
GIT_DIR'den bahsettiği için +1. çıplak bir repodaki kancalarda, GIT_DIR '.' '.git' yerine.
commonpike

İçin +1 git init. Cevabınızı okuduktan sonra, bunu klonladığım depolarda birden çok kez kullandım , ancak tanınmadı. Yani, bir olması gereken bir dizin ağacından çalıştırıldığında git repository, git dizinindeki tüm dosyalara sahip olduğu, ancak öyle olmadığını iddia ettiği zaman güvenli görünüyorfatal: Not a git repository (or any parent up to mount point
ElderDelp

34

Benim sorunum benim işletim sistemi ile bazı hıçkırık için yerel depomdaki herhangi bir komut "ölümcül: Git git deposu (veya üst dizinlerin herhangi biri): .git", fsck komutu dahil.

Sorun boş HEAD dosyasıydı .

.Git / refs / heads üzerinde çalıştığım gerçek şube adını bulabildim ve sonra bunu yaptım:

echo 'ref: refs/heads/ML_#94_FILTER_TYPES_AND_SPECIAL_CHARS' > .git/HEAD

İşe yaradı.


2
HEAD dosyam herhangi bir nedenle bozuldu, bu yüzden geri
Steven

1
Sen harika bir dostsun. Zamanımın
Tonu

Benim sorunum da buydu. Teşekkürler
Carlos Rafael Ramirez

3
Bir git rebase sırasında Visual Studio açık vardı ve Visual Studio bir dosya değişikliği fark ve kısa bir süre sonra mavi bir ölüm ekranı vardı. Yeniden başlatmadan sonra .git / HEAD NULLS ile doldurulduktan ve onları tam bir karma ile değiştirdiğimde (5621afeffbabed40e3f386676068c45643644b7d) .git \ refs \ remotes \ origin \ master gibi bir yerden okuduğumda, yine stackoverflow.com/questions'a ihtiyacım vardı / 1115854 /… bu bana .git / index silmemi söyledi ve git reset yapmadan önce .git / index.lock dosyasını kaldırmam gerekiyordu. Şimdi iyi
Ivan

1
İşimi geri alma umudumu neredeyse kaybettim. Sadece çözümünüzü kopyalayıp yapıştırıyorum ve sihir yaptı. Teşekkürler
Mukesh Kumar

17

NOT: Bu, OP'nin sorunu olan ortak soruna değil, bu hata iletisinin gelebileceği farklı soruna cevap vermez. Sadece bu cevabı yazmak için yeni bir soru yapmak istemiyordum, bunun yerine bunu yapmam gerekip gerekmediğini söyle: P

Durumum var, büyük olasılıkla yaşadığım bazı çökmelerin bozulması nedeniyle, bu hatayı olsa bile aldım .git.

smar@aaeru ~/P/Nominatim> git status
fatal: Not a git repository (or any of the parent directories): .git
smar@aaeru ~/P/Nominatim [128]> ls .git
COMMIT_EDITMSG  config*  FETCH_HEAD  HEAD  index  logs/  modules/  objects/  ORIG_HEAD packed-refs

Gerçekten korunmaya ihtiyacı olan hiçbir şeyim olmadığı için, sadece kukla bir yol izledim ve ...

smar@aaeru ~/P/Nominatim [128]> git init
Reinitialized existing Git repository in /home/smar/Projektit/Nominatim/.git/

Yine de çalışmıyor, örneğin git logdöner fatal: bad default revision 'HEAD'. Uzaktan kumandalar da vardı, bu yüzden yaptım git fetch --allve sonra git reset --hard origin/masterkendimi daha önce repo olduğu duruma getirmek için.

Bazı kararsız değişiklikler varsa, sen onları göremediğini unutmayın git status, git diffvb. Sonra git diff yourfile > patchsıfırlamayı çalıştırmadan hemen önce.

En azından benim için reflog ( git reflog) tamamen kayboldu. Bu nedenle, sıfırlamayı yaparsanız ve önlemek istediğiniz bazı değişiklikler varsa, sıfırlamadan sonra bunları geri alabileceğinizden emin değilim. Bu nedenle, nihayetinde bunu denemeden önce klonu kopyalayarak yedekleyemeyeceğiniz tüm değişikliklere sahip olduğunuzdan emin olun.


Sorunu anladım. Ve @Smar belirtilen şekilde denedim, ama aynı sonuç "ölümcül ....". Peki, sırada ne var? herhangi bir öneri?
Kaos

1
Bu sorun, Visual stüdyo kullanırken oluştu, git initve git fetch --allsorunu düzeltmek yaptı.
Morse

7
$ git status
fatal: Not a git repository:

Sadece cmd veya git kabuğunuza veya başka bir terminalinize aşağıdakileri yazın:

$ git init

6

Dosya sisteminde git projesinin konumunu taşıdıktan sonra bu sorun bana oldu. Bazı git komutlarını çalıştırdığımda hata oluştu, örneğin:

$ git status
fatal: Not a git repository: /home/rospasta/path_old/gitprojecta/.git/modules/.travis

/home/rospasta/path_old/gitprojecta/.travis/.gitProjenin eski yerinin mutlak yolunu buldum yazıldı. Yeni konumun bu yolunu manuel olarak güncellemek sorunu çözdü benim için.

Yani benim sorun bir git sorunu olabilir veya olmayabilir, ama HTH.


5

Başka birine yardımcı olması durumunda, yanlışlıkla .git / objects /

ölümcül: Git deposu değil (veya üst dizinlerden herhangi biri): .git

Geri yüklemek sorunu çözdü.


4

Komut satırı / CLI'de, geçerli dizininiz havuz değilse bu hatayı alırsınız. Yani, ilk CD repo içine gerekir.


4

Muhtemelen çok geç ama Gelecekteki ziyaretçilere yardımcı olabilecek başka bir çözüm. Önce eski .gitdizini silin -

rm .git

Sonra git deposunu tekrar başlatın

git init

6
Bunun, taahhütler gibi tüm git meta verilerini yok ettiği unutulmamalıdır. Verilerinizi koruyacaksınız, ancak Git "yeni başlayacak" - bu iyi bir şey olmayabilir.
Joseph A.

1
@JosephA .: haklısın, bu yetersiz. Önerebileceğiniz daha iyi bir çözüm var mı? Elde fatalhalde hata .gitklasörün var.
Hassan Baig

Ama hey, taahhütler uzaktan repoda değil mi? Ya da HD / yerel olarak taahhütlerinizin gerçekte neye ihtiyacı vardır? @JosephA.
kevthanewversi

Coz Ben hala git geri döndürme, git sıfırlama gibi şeyleri yerel olarak taahhüt bilgisine sahip olmadan yapabileceğinizi düşünüyorum ... değil mi? @JosephA.
kevthanewversi

1
Bu her şeyi siliyor! Muhtemelen bunu çözmenin en kötü yolu.
Richard Lalancette

4

Belli bir klasöre gitmeyecekmişsiniz gibi görünüyor. Örneğin, bugsBunny adlı bir proje üzerinde çalışıyorsam ve d: / work: code klasörüne kaydedilirse, önce cd d: / work / code / bugsBunny kullanarak bu klasöre gitmelisiniz, sonra bundan sonra git komutlarınızı kullanmaya devam edebilirsiniz.


4

Ben bile aynı sorunu yaşadım. i crontab kullanarak 17:55 bir hafta iş günlerinde benim git repo tüm kodları yedekleyecek bir kabuk komut dosyası yazdı. cron günlüklerini görerek yukarıda belirtilen sorunu buldum.

Yukarıdaki sorun sadece gir olmayan bir komuttan (yani çalışan kopya olmayan diğer dir) git komutlarını yürütmeye çalıştığınızda gelir. düzeltmek -C <git dir>için git komutunda bu ekleme git statusolacak git -C /dir/to/git statusve git add -Aolacak git -C /dir/to/git -A.


3

Benim durumumda Tortoise SVN kullandım ve aynı zamanda Visual Studio GIT işlevlerini kullanmak için hata yaptım. Böylece Visual Studio .git klasörü içindeki HEAD dosyasını kilitledi, böylece ne VS ne de Tortoise repoya erişebildi ve her iki uygulamadan da "ölümcül: Git gitme değil ..." hatasını aldım.

Çözüm:

  1. .Git klasörünün içine girin ve "HEAD.lock" adını yalnızca "HEAD" olarak yeniden adlandırın
  2. Bir GIT yönetici uygulaması için karar verin ve diğerine dokunmayın

3

Bunun için bitbucket komutlarında eksik olan bir komut girmeniz gerekir

Lütfen git init'i deneyin.


2

benim durumumda, ben windows cmd kullanarak herhangi bir git - komutları (örneğin git durumu) denerken aynı sorunu vardı. yani çevre değişkenlerine pencere https://windows.github.com/ git için yükledikten sonra "PATH" değişkeninin git sınıf yolunu ekleyin. genellikle git C: / user / "kullanıcı adı" / appdata / local / git / bin üzerine kurulur bunu çevresel değişkendeki PATH'a ekler

ve cmd üzerinde bir şey daha git deponuza veya klonunuzun pencerenizde bulunduğu cd'ye gider, genellikle herhangi bir git komutuna sahip olabilmeniz için github cd Document / Github / project altındaki belgelerde saklanır.

teşekkür ederim


2

Yerel repo'nun depolandığı kaynak klasörünüze gidin, örnek mayın c: / GitSource'da bulunur, klasördeyken sağ tıklayın, git bash buraya tıklayın, sonra git durumu ....


2

GIT_DIR ayarlanmamış olmalıdır: unset GIT_DIR


2

Benim durumumda .git / HEAD dosyası bozuldu (sadece noktalar içeriyordu). Bu yüzden onu düzenledim ve içeriğini değiştirdim:

ref: refs/heads/master

ve tekrar çalışmaya başladı.


1

Benim için bu, yolumdaki hatalı biçimlendirilmiş sahiplikle ilgiliydi .git/. rootsahip olunan .git/HEADve .git/indexönlenmesi, jenkinsiş çalışmasını kullanıcıyı.


1
Bu komut satırında çoğaltılamaz gibi görünüyor. Sahipliğini ayarladıktan sonra .git/HEADve .git/indexhiç root:root, hala hatasız uzaktan kumanda eklemek mümkün duyuyorum. Ben bütün sahipliğini değiştirdiğinizde .gitiçin dizine root, farklı bir hata alıyorum: error: could not lock config file .git/config: Permission denied.
Kyle Strand

1

Aşağıdaki hata Gits geçerli dizinde .git dosyasını bulamadığı için hata mesajı atma gibi görünüyor.

Bu nedenle, kodu git'ten çıkış yaptığınız depo dizinine değiştirin ve bu komutu çalıştırın.

  • $ git ödeme

1

Benim durumumda pencerelerde git'in bir noktadan sürücü harfi için büyük / küçük harfe duyarlı olduğunu gördüm.

Git ikili ikili windows yükselttikten sonra kullanılan eskiden cli komutları durdu. örneğin komut dosyasındaki yol D : \ bla \ file.txt iken git komutu yalnızca d : \ bla \ file.txt


1

git olmak için iyi çalışıyordu ve birdenbire bu fatal: Not a git repository (or any of the parent directories): .gitmesajı göstermeye başladı .

Benim için .git klasöründe neyin bozuk olduğundan emin git clone ** newfolderdeğilim. Git hata mesajını göstermeye başlamadan önce değişiklikler yaptığım tüm .git klasörünü bozuk / eski klasöre kopyaladım.

Her şey normale döndü ve git de değiştirilmiş / sahnelenmemiş dosyalarımı tanıdı.


0

.git/ORIG_HEADve diğer kök .git repo dosyalarını geri yükleme

Yedeklemeden geri yükledikten sonra bu hatayı aldım, görünüşe göre .git dizin kökünde bulunan dosyalar hedefe ulaşmadı, ancak tüm alt klasörler ilk başta repo sağlam olduğunu düşündüm.

Kök dosyaları geri yükleyerek düzelttim.


0

GitLab ile kimlik doğrulama sorunlarından sonra Jenkins Git eklentisi ile bu sorunu yaşadım. Jenkins 'hudson.plugins.git.GitException: [...] stderr: GitLab: Aradığınız proje bulunamadı. ölümcül: Uzak depodan okunamadı. '

Ancak doğrudan Jenkins kutusundan (komut satırı) bir 'git clone' veya 'git fetch' yaptıysam sorunsuz çalıştı.

Sorun, belirli bir iş için Jenkins jobs klasöründeki / workspace dizininin tamamı silinerek giderildi;

rm -Rf $JENKINS_HOME/jobs/myJenkinsJob/workspace/

Muhtemelen yerel .git klasörü bayat / bozuk olmuştu?


0

Bunun nedeni izinlerden de kaynaklanıyor olabilir. Sahip / grup izinlerini kontrol edin ve bu verilere erişmek için yeterli izinlere sahip olduğunuzdan emin olun. Benim durumumda, sahiplik root: root olarak ayarlanmış bir repoda "git status" çalıştırırken bu hatayla karşılaştım. "Git status" komutunu root olarak çalıştırmak sorunumu çözdü. Alternatif olarak, kullanıcı / grup sahipliğinin root: root olmasını istemiyorsanız, erişiminiz olan bir şeyin repo'sunu seçin.



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.