Menerima “fatal: Not a git repository” ketika mencoba untuk remote menambahkan repo Git

439

Saya memperkenalkan diri kepada Git dengan mengikuti tutorial ini:

Semuanya berfungsi dengan baik sampai bagian di mana repo ditambahkan ke mesin lokal saya:

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

(Setelah mengganti USERNAME, NFSNSERVER, dan REPOAME dengan nama yang benar) Saya menerima kesalahan:

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

Bisakah Anda membantu saya melewati langkah ini?

Corey
sumber
2
git inittetapi juga pastikan tidak ada subdirektori Anda yang memiliki .gitfolder sendiri
James Oravec

Jawaban:

908

Apakah Anda init repositori Git lokal, di mana remote ini seharusnya ditambahkan?

Apakah direktori lokal Anda memiliki .gitfolder?

Coba git init.

Assaf Lavie
sumber
2
Saya sudah melakukan langkah ini, tetapi harus melakukannya lagi setelah mengatur akun halaman mesin saya menginstal halaman mesin.
AVProgrammer
3
.gitfolder saya hilang. Apakah git initsama dengan menghapus folder repositori, lalu git clone .... Yang perlu saya lakukan adalahpull
Francisco Corrales Morales
3
@FranciscoCorralesMorales jika .gitfolder Anda hilang, Anda dapat menjalankan git initlagi untuk membuat yang baru. Anda harus menambahkan ulang remote terlebih dahulu sebelum dapat menariknya.
3
Saya mendapatkan kesalahan yang sama ketika mengirimkan perubahan dari sistem lokal. Mencoba git init dan berhasil. Terima kasih!
rbashish
6
punyaku memiliki .git dan aku sudah melakukan git init tapi aku mendapatkan kesalahanjalal@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

Anda akan mendapatkan kesalahan ini jika Anda mencoba menggunakan perintah Git ketika direktori kerja Anda saat ini tidak ada dalam repositori Git. Itu karena, secara default, Git akan mencari .gitdirektori repositori (di dalam root proyek?), Seperti yang ditunjukkan oleh jawaban saya untuk "Git tidak akan menampilkan log kecuali saya ada di direktori proyek" :

Menurut dokumentasi Linux Kernel Git resmi , GIT_DIRapakah [variabel lingkungan] disetel untuk mencari .gitdirektori (di direktori kerja saat ini?) Secara default:

Jika GIT_DIRvariabel lingkungan disetel, maka ia menentukan jalur yang akan digunakan alih-alih default .gituntuk basis repositori.

Anda harus cdmasuk ke repositori / copy pekerjaan, atau Anda tidak menginisialisasi atau mengkloning repositori di tempat pertama, dalam hal ini Anda perlu menginisialisasi repo di direktori tempat Anda ingin meletakkan repo:

git init

atau mengkloning repositori

git clone <remote-url>
cd <repository>
Masyarakat
sumber
13
+1 untuk menyebutkan GIT_DIR. dalam kait dalam repo kosong, GIT_DIR disetel ke '.' bukannya '.git'.
commonpike
+1 untuk git init. Setelah membaca jawaban Anda, saya menggunakan ini beberapa kali pada repositori yang saya lakukan klon, tetapi tidak dikenali. Jadi, tampaknya aman ketika dijalankan dari pohon direktori yang seharusnya menjadi git repository, memiliki semua file di direktori git, tetapi diklaim tidakfatal: Not a git repository (or any parent up to mount point
ElderDelp
34

Masalah saya adalah bahwa untuk beberapa cegukan dengan OS saya perintah apa pun pada repositori lokal saya berakhir dengan "fatal: Bukan repositori git (atau direktori induk mana pun): .git", dengan menyertakan perintah fsck.

Masalahnya adalah file HEAD kosong .

Saya dapat menemukan nama cabang aktual yang telah saya kerjakan di .git / refs / heads dan kemudian saya melakukan ini:

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

Itu berhasil.

Marcin TP Łuczyński
sumber
2
File HEAD saya karena alasan apa pun rusak, jadi saya harus mengembalikannya dan memperbaiki masalah ini
Steven
1
Anda teman baik. Menyimpan banyak waktu saya
Vaibhav Sah
Ini juga masalah saya. Terima kasih
Carlos Rafael Ramirez
3
Saya membuka Visual Studio selama git rebase dan Visual Studio memperhatikan perubahan file dan tidak lama kemudian saya mendapat layar biru kematian. Setelah reboot .git / HEAD diisi dengan NULLS dan ketika saya menggantinya dengan hash penuh (5621afeffbabed40e3f386676068c45643644b7d) membaca dari suatu tempat seperti .git \ refs \ remotes \ origin \ master, git mulai bekerja lagi saya juga membutuhkan stackoverflow.com/questions / 1115854 / ... karena ini memberitahu saya untuk menghapus .git / index dan saya harus menghapus .git / index.lock sebelum melakukan git reset. Baik sekarang
Ivan
1
Saya hampir kehilangan harapan untuk mendapatkan pekerjaan saya kembali. Hanya saya salin dan tempel solusi Anda dan itu memang ajaib. Terima kasih
Mukesh Kumar
17

CATATAN: ini tidak menjawab masalah umum, yang merupakan masalah OP, tetapi untuk masalah berbeda di mana pesan kesalahan ini mungkin muncul. Saya tidak merasa ingin melakukan pertanyaan baru hanya untuk menuliskan jawaban ini, beri tahu saya jika saya harus melakukannya: P

Saya menghadapi situasi, kemungkinan besar karena beberapa kerusakan pada crash yang saya alami, bahwa saya mendapatkan kesalahan ini bahkan ketika .gitmemang ada.

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

Karena saya tidak memiliki sesuatu yang benar-benar perlu dilestarikan, saya hanya pergi dengan cara boneka, dan ...

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

Masih tidak berfungsi, seperti misalnya git logkembali fatal: bad default revision 'HEAD'. Jarak jauh ada di sana, jadi aku melakukannya git fetch --alldan baru sajagit reset --hard origin/master untuk mendapatkan diri saya ke keadaan repo sebelumnya.

Perhatikan bahwa jika ada beberapa perubahan yang tidak dikomit, Anda dapat melihatnya dengan git status, git diffdan seterusnya. Lalu sajagit diff yourfile > patch sebelum menjalankan reset.

Setidaknya bagi saya reflog ( git reflog) menghilang sepenuhnya. Karenanya, jika Anda melakukan reset, dan ada beberapa perubahan yang ingin Anda cegah, saya tidak yakin Anda bisa mendapatkannya kembali setelah reset lagi. Jadi, pastikan bahwa Anda memiliki semua perubahan yang tidak dapat Anda lewatkan, pada akhirnya hanya dengan menyalin klon sebelum mencoba ini.

Smar
sumber
Saya punya masalah. Dan memang mencoba cara @Smar disebutkan, tetapi hasilnya sama "fatal ....". Jadi, apa yang harus dilakukan selanjutnya? ada saran?
Kekacauan
1
Masalah ini terjadi saat menggunakan Visual studio, git initdan git fetch --allmemang memperbaiki masalah ini.
Morse
7
$ git status
fatal: Not a git repository:

Cukup ketik yang berikut ini di cmd atau git shell Anda atau terminal lain:

$ git init
der_michael
sumber
6

Masalah ini terjadi pada saya setelah saya memindahkan lokasi proyek git pada sistem berkas. Ketika saya menjalankan beberapa perintah git kesalahan terjadi, misalnya:

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

Saya menemukan di /home/rospasta/path_old/gitprojecta/.travis/.gitjalur absolut dari lokasi lama proyek ditulis. Memperbarui jalur lokasi baru ini secara manual menyelesaikan masalah bagi saya.

Jadi masalah saya mungkin atau mungkin bukan masalah git, tetapi HTH.

Ishak
sumber
5

Jika itu membantu orang lain, saya mendapat pesan kesalahan ini setelah secara tidak sengaja menghapus .git / objek /

fatal: Bukan repositori git (atau direktori induk mana pun): .git

Mengembalikannya memecahkan masalah.

eduherminio
sumber
4

Di baris perintah / CLI, Anda akan mendapatkan kesalahan ini jika direktori Anda saat ini BUKAN repositori. Jadi, Anda harus terlebih dahulu CD ke repo.

sid smith
sumber
4

Mungkin terlambat tetapi solusi lain yang mungkin membantu pengunjung masa depan. Hapus dulu .gitdirektori lama -

rm .git

Kemudian inisialisasi repo git lagi

git init
kevthanewversi
sumber
6
Perlu dicatat bahwa ini menghancurkan semua metadata git seperti commit. Anda akan menyimpan data Anda, tetapi Git akan "mulai segar" - ini mungkin bukan hal yang baik.
Joseph A.
1
@ YosephA .: Anda benar, itu tidak optimal. Apakah ada solusi yang lebih baik yang dapat Anda sarankan? Saya mendapatkan fatalkesalahan meskipun .gitfolder ada.
Hassan Baig
Tapi hei, bukankah komit sudah di repo jarak jauh? Atau untuk apa Anda benar-benar membutuhkan komit pada HD / lokal Anda untuk ...? @JosephA.
kevthanewversi
Karena saya pikir Anda masih dapat melakukan hal-hal seperti git revert, git reset tanpa memiliki info komit secara lokal ... kan? @JosephA.
kevthanewversi
1
Ini menghapus semuanya! Mungkin cara terburuk untuk menyelesaikan ini.
Richard Lalancette
4

Sepertinya Anda tidak pergi ke folder spesifik Anda. Sebagai contoh, jika saya mengerjakan proyek bernama bugsBunny dan disimpan di folder d: / work: code, jadi pertama-tama Anda harus pergi ke folder itu menggunakan cd d: / work / code / bugsBunny, lalu setelah itu Anda dapat terus menggunakan perintah git Anda.

Vikrant singh
sumber
4

Bahkan saya punya masalah yang sama. saya menulis skrip shell yang akan membuat cadangan semua kode saya ke repo git saya pada hari kerja seminggu di 17:55 dengan menggunakan crontab. dengan melihat log cron saya menemukan masalah yang disebutkan di atas.

masalah di atas hanya muncul ketika Anda mencoba menjalankan perintah git dari direktori non-gir (yaitu dari direktori lain yang bukan merupakan copy pekerjaan). untuk memperbaiki ini tambahkan -C <git dir>dalam perintah git Anda mengeksekusi sehingga git statusakan git -C /dir/to/git statusdan git add -Aakan git -C /dir/to/git -A.

Mani
sumber
3

Dalam kasus saya, saya menggunakan Tortoise SVN dan membuat kesalahan dengan juga menggunakan fungsi Visual Studio GIT pada saat yang sama. Itu membuat Visual Studio mengunci file HEAD di dalam folder .git sehingga VS atau Tortoise tidak dapat mengakses repo dan saya mendapatkan kesalahan "fatal: Not a git repo ..." dari kedua aplikasi.

Larutan:

  1. Masuk ke dalam folder .git dan ganti nama "HEAD.lock" menjadi "HEAD"
  2. Putuskan untuk satu aplikasi admin GIT dan jangan sentuh yang lain
Adrian Rosca
sumber
3

Untuk itu Anda perlu memasukkan satu perintah yang tidak ada dari perintah bitbucket

Silakan coba git init.

VIKAS KOHLI
sumber
2

dalam kasus saya, saya memiliki masalah yang sama ketika saya mencoba perintah git - (misalnya status git) menggunakan windows cmd. jadi apa yang saya lakukan adalah setelah menginstal git untuk jendela https://windows.github.com/ dalam variabel lingkungan, tambahkan path kelas git pada "PATH" yang dapat diubah. biasanya git akan diinstal pada C: / user / "username" / appdata / local / git / bin tambahkan ini pada PATH dalam variabel lingkungan

dan satu hal lagi di cmd pergi ke repositori git Anda atau cd ke tempat klon Anda berada di jendela Anda biasanya mereka akan disimpan pada dokumen di bawah dokumen github cd / Github / proyek Anda setelah itu Anda dapat memiliki perintah git

Terima kasih

keyo
sumber
2

Pergi ke folder sumber Anda di mana repo lokal disimpan, misalnya milik saya ditemukan di c: / GitSource, klik kanan saat berada di folder, klik git bash di sini, lalu git status ....

wesley7
sumber
2

GIT_DIR seharusnya tidak disetel: unset GIT_DIR

okwap
sumber
2

Dalam kasus saya, file .git / HEAD rusak (hanya berisi titik). Jadi saya mengeditnya dan mengganti isinya dengan:

ref: refs/heads/master

dan mulai bekerja lagi.

menangis
sumber
1

Bagi saya, ini terkait dengan kepemilikan yang salah dalam .git/jalur saya . rootdimiliki .git/HEADdan .git/index, mencegahjenkins pengguna menjalankan pekerjaan.

Hugh Esco
sumber
1
Tampaknya ini tidak dapat direproduksi di baris perintah. Setelah mengatur kepemilikan .git/HEADdan .git/indexuntuk root:root, saya masih dapat menambahkan remote tanpa kesalahan. Ketika saya mengubah kepemilikan seluruh .gitdirektori untuk root, saya mendapatkan error yang berbeda: error: could not lock config file .git/config: Permission denied.
Kyle Strand
1

Galat di bawah sepertinya Gits tidak menemukan file .git di direktori saat ini sehingga melempar pesan kesalahan.

Oleh karena itu ubahlah ke direktori ke direktori repositori tempat Anda telah checkout kode dari git dan kemudian jalankan perintah ini.

  • checkout $ git
Ajay Kumar
sumber
1

Dalam kasus saya, saya menemukan bahwa git di windows menjadi case sensitive untuk huruf drive dari beberapa titik.

Setelah memutakhirkan git binary pada perintah windows cli yang digunakan untuk bekerja dihentikan. misalnya path dalam skrip adalah D : \ bla \ file.txt sedangkan perintah git hanya diterima d : \ bla \ file.txt

ilane
sumber
1

git berfungsi dengan baik untuk menjadi dan tiba-tiba mulai menunjukkan fatal: Not a git repository (or any of the parent directories): .gitpesan ini .

Bagi saya tidak yakin apa yang rusak di folder .git, saya lakukan git clone ** newfolderdan menyalin seluruh folder .git ke folder saya yang rusak / lama di mana saya membuat perubahan sebelum git mulai menampilkan pesan kesalahan ..

Semuanya kembali normal dan git juga mengenali file saya yang diubah / tidak dipentaskan.

Neel
sumber
0

mengembalikan .git/ORIG_HEAD file repo root .git dan lainnya

Saya mendapatkan kesalahan ini setelah memulihkan dari cadangan, ternyata file-file yang terdapat dalam root direktori .git tidak mencapai target, tetapi semua subfolder melakukannya pada awalnya saya pikir repo itu masih utuh.

Saya memperbaikinya dengan mengembalikan file root.

AndrewD
sumber
0

Saya punya masalah dengan plugin Jenkins Git setelah masalah otentikasi dengan GitLab. Jenkins melaporkan 'hudson.plugins.git.GitException: [...] stderr: GitLab: Proyek yang Anda cari tidak dapat ditemukan. fatal: Tidak bisa membaca dari repositori jarak jauh. '

Namun jika saya melakukan 'git clone' atau 'git fetch' langsung dari kotak Jenkins (command line) itu bekerja tanpa masalah.

Masalah ini diatasi dengan menghapus seluruh direktori / ruang kerja di folder pekerjaan Jenkins untuk pekerjaan tertentu, misalnya

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

Agaknya folder .git lokal sudah basi / rusak?

GreensterRox
sumber
0

Ini mungkin juga karena izin. Periksa izin pemilik / grup dan pastikan Anda memiliki izin yang memadai untuk mengakses data itu. Dalam kasus saya, saya menemukan kesalahan ini ketika menjalankan "git status" di repo yang kepemilikannya disetel ke root: root. Menjalankan "git status" sebagai root menyelesaikan masalah saya. Atau, jika Anda tidak ingin kepemilikan pengguna / grup menjadi root: root, beri tahu repo sesuatu yang Anda punya akses.

EliT
sumber
0

Saya punya masalah ini dan memperbaikinya dengan menambahkan file README.md

Supun Kavinda
sumber