Git - fatal: Tidak dapat membuat '/path/my_project/.git/index.lock': File ada

806

Saya masih mendapatkan pesan kesalahan ini, ketika saya mencoba untuk memindahkan pohon proyek saya ke git repo.

Saya memeriksa izin direktori saya dengan proyek ini dan ini diatur pada 777. Di terminal dalam direktori dengan my_projectsaya set:

git init

dan kemudian jika saya mencoba

git add.

atau

git commit -m "unggahan pertama"

jadi saya akan mendapatkan kesalahan

fatal: Unable to create '/path/my_proj/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

Saya mencoba juga membuat repo baru dan di sana untuk mengkomitnya, tetapi sayangnya masih pesan kesalahan yang sama.

Apa penyebab masalahnya?

pengguna984621
sumber
1
Saya mengalami masalah ini karena saya login dengan su di terminal yang berbeda, beralih kembali ke yang pertama semuanya berjalan baik
maazza
3
bro saya punya masalah yang sama, gunakan "sudo git add. atau git commit -m" unggahan pertama "" daripada "git add. atau git komit -m" unggahan pertama ""
mehdi zahrane
Saya memperbaikinya dengan mengubah izin pada file .git per stackoverflow.com/questions/14127255/… , lihat jawaban dari Mahshid Zeinaly
vikramvi

Jawaban:

1740

Mencoba

rm -f ./.git/index.lock

Di direktori repositori Anda. Pesan kesalahan agak eksplisit tentang apa yang menyebabkannya, jadi jika Anda tidak memiliki proses git lain yang berjalan (yang merupakan kasus normal), lanjutkan dan hapus file itu.

Raphael R.
sumber
7
Itu tidak terjadi secara otomatis. Anda perlu menjalankan perintah git pushuntuk mendorong perubahan Anda ke server web. Detail tentang cara kerjanya ada di sini: gitready.com/beginner/2009/01/21/pushing-and-pulling.html
Raphael R.
9
Saya mengalami masalah yang sama persis tetapi saya tidak dapat menyelesaikannya dengan cara ini karena file .git / index.lock tampaknya tidak ada: touch .get/index.lockpengembaliantouch: .get/index.lock: No such file or directory
emersonthis
24
Emerson, Anda tampaknya mencari .get bukannya .git yang tidak akan ada.
Apie
3
Izin ditolak berarti Anda harus memberi pengguna yang Anda gunakan Git dengan izin baca / tulis pada file. Lihat perintah chmod (di * nix atau Properties -> tab Security di WIndows)
Stijn de Witt
9
Jika kesalahan Anda mengatakan "Izin Ditolak", Anda mungkin telah menyalin file dari tempat lain, dan tidak memiliki izin di direktori .git. Gunakan ls -luntuk melihat izin, lalu gunakan sudo chown -R username ./*dan sudo chgrp -R username ./*untuk mengubah pengguna dan grup ke Anda sendiri untuk semua file dalam proyek.
chech
158

Di Windows, lakukan ini di command prompt dari direktori repo:

cd .git
del index.lock

UPDATE: Saya telah menemukan bahwa saya tidak perlu melakukan prosedur ini jika saya menunggu beberapa saat setelah saya menutup file yang saya kerjakan sebelum saya mencoba untuk beralih cabang. Saya pikir kadang-kadang masalah ini terjadi karena git mengejar ketinggalan dengan sistem file yang lambat. Lainnya, lebih banyak pengembang yang berpengetahuan git bisa berpadu jika mereka pikir ini benar.

ssaltman
sumber
3
Anehnya, saya mendapatkan kesalahan tentang file tetapi kemudian ketika saya mencoba untuk menghapus file di cmd.exe, ia mengatakan file tidak ditemukan :) Hasil yang sama dengan jalur absolut dan relatif. Tapi di Git Bash, ini berhasil (dengan rm -f index.lock)
Juha Untinen
Dalam kasus saya, saya mengeksekusi "Ambil" setelah beberapa restart Sourcetree dan bekerja.
maxivis
32

Coba keluar dari Xcode - karena ini adalah klien git, Anda harus keluar dari Xcode untuk menghindari masalah dengan git di baris perintah.

Jeff Grimes
sumber
4
Bagus! Perhatikan bahwa Xcode DAN klien Git lain dapat menjadi penyebab. Dalam kasus saya butuh penutupan gitX juga.
NSTJ
Setelah menghapus file kunci saya 10 kali atau lebih pagi ini saya akhirnya menemukan jawaban ini. Tidak tahu bagaimana xcode dibuka tetapi itu pasti menghancurkan alur kerja saya. Terima kasih atas tipnya!
Cloudkiller
24

Saya mengalami masalah yang sama. Saya mencoba

rm -f ./.git/index.lock 

dan konsol memberi saya pesan kesalahan. Kemudian, saya mencoba

rm --force ./.git/index.lock

dan itu berhasil.

Semoga berhasil! Ini berfungsi super

Olivia Steger
sumber
Saya tidak melihat folder .git dalam kasus saya. Saya hanya melihat ./ dan ../ sejauh menyangkut direktori tersembunyi.
Anda menggunakan komputer jenis apa?
Olivia Steger
18

Di direktori .git saya, tidak ada file index.lock. Jadi, menggunakan shell Git Bash, saya berlari ...

cd .git
touch index.lock
rm index.lock

Perintah sentuh membuat file, dan masalahnya hilang.

John Livermore
sumber
Mengapa ini diturunkan? Saya menerima pesan kesalahan yang sama seperti OP. Ini memperbaiki saya, dan mungkin bisa membantu orang lain.
John Livermore
1
Saya mengalami sedikit variasi: (1) Saya mengalami pesan kesalahan dan bereksperimen dengan 'perbaikan' yang berbeda; (2) Saya menemukan itu index.locktidak ada; (3) Saya menggunakan touchperintah di atas ; (4) klien git saya berhenti berfungsi secara normal (yang terbaik, itu melambat hingga merangkak); (5) Saya menghapus index.lock; (6) repositori mulai berfungsi secara normal lagi.
clarpaul
Jelas tidak boleh downvoted, bereskan masalah saya. Saya tidak punya file index.lock, tapi begitu saya buat, dan kemudian dihapus, komit berhasil.
Bynho
touch index.lockmenyiratkan John berada di * NIX, tapi saya hanya melakukan yang setara pada Windows 10 (buat index.lockfile dengan editor teks, hapus segera, dan untung), dan masalahnya hilang.
ruffin
1
@Park diperbarui ...
John Livermore
13

Apakah Anda secara tidak sengaja membuat repositori menggunakan rootpengguna?

Kebetulan saya membuat repositori git sebagai rootpengguna.

Saya menghapus repositori git dan membuatnya lagi tanpa sudodan berfungsi.

hktang
sumber
1
Ya, itu saja. Terima kasih
Natassia Tavares
9

Saya memiliki masalah ini juga, dan saya merasa ini benar-benar masalah izin. jadi saya melakukan ini:

sudo chown -R : .git #change group
sudo chmod -R 775 .git #change permission

maka ererything itu hebat, dan gaa sukses.

dan kemudian saya menggunakan gp, saya mendapatkan kesalahan lain hampir kesalahan yang sama

sudo chown -R "${USER:-$(id -un)}" . #use this can fix the problem
mempertahankan orca
sumber
brilian, apa fungsinya? "$ {USER: - $ (id -un)}"
Nick
7

Di Mac OS X lakukan ini di command prompt dari direktori repo:

cd .git
rm index.lock
Rick Wong
sumber
1
Tidak ada file atau direktori seperti itu
Channox
5

Jika Anda menggunakan salah satu #intelliJIDE dan menerima pesan ini (saya menggunakan #webtorm), harap perhatikan bahwa masalah ini dapat terjadi karena menyembunyikan salah satu folder proyek (di dalam pengaturan), dan ini dapat mencegah GITpenggabungan.

neoswf
sumber
5

Solusi yang berhasil bagi saya adalah menutup teks luhur karena proses running git diprakarsai oleh editor.

snorkelzebra
sumber
Saya baru saja menginstal plugin Teks Sublime GitSavvy dan memiliki kesalahan ini hanya sejak itu. Terima kasih atas petunjuknya, @snorkelzebra
Kitze
5

Jika setelah Anda mencoba:

rm -f ./.git/index.lock

Anda mendapatkan:

rm: tidak dapat membatalkan tautan 'index.lock': Izin ditolak

Coba tutup semua perangkat lunak yang mungkin menggunakan Git. Saya memiliki Source Tree dan Visual Studio dibuka dan setelah menutup kedua perintah itu bekerja.

Boos
sumber
5

Di Windows, saya hanya berhasil menghapus file kunci setelah Mengakhiri Tugas untuk semua proses Git Windows (32bit) di Task Manager.

Solusi (Menang 10)

1. Akhiri Tugas untuk semua proses Git Windows (32bit) di dalam Task Manager

2. Hapus file .git / index.lock

ChrisDeDavidMindflowAU
sumber
4

Dalam kasus saya solusinya adalah menunggu 5 menit. Jelas operasi saya sebelumnya masih berjalan tetapi saya tidak tahu. Saya menggunakan tortoise git di windows.

rans
sumber
4

Gunakan ini:

rm -Force ./.git/index.lock
Manoj Tarkar
sumber
4

Saya pikir ada solusi yang lebih baik daripada menghapus file (dan Tuhan tahu apa yang akan terjadi selanjutnya ketika menghapus / membuat file dengan sudo):

git gc
Roy Segall
sumber
3

Anda memiliki masalah dengan .git/index.lockbegitu hapus menggunakan perintah di bawah ini.

Perintah:

sudo rm -rf .git / index.lock

Pramod Kharade
sumber
3

Saya mencobanya dengan banyak metode beberapa kali tetapi yang ini berhasil untuk saya (saya menggunakan terminal PyCharm):

$ cd .git/

$ rm -f index.lock

Kemudian saya mencoba lagi untuk membuat git repo kosong:

$ git init

$ git add .

$ git commit -m "commit msg"
karat
sumber
3

Jika itu submodule, coba ini di direktori repositori Anda:

rm -f ../.git/modules/submodule-name/index.lock

ganti submodules-name menjadi nama submodule Anda.

Kharda
sumber
2

Resolusi untuk masalah ini adalah menyalin tiga file xcode / proyek di direktori dan kemudian membuat direktori baru (di lain tempat) dan kemudian menempelkan tiga file / direktori.

G unitzo
sumber
2

Kita juga bisa membunuh proses git. Saya menerima masalah yang sama melalui aplikasi GUI untuk git, ada masalah dan git membuat beberapa pekerjaan tanpa batas. Proses pembunuhan akan membekukan aplikasi yang bekerja dengan git, cukup restart saja dan semuanya akan beres.

kaspartus
sumber
2

Dalam hal, untuk alasan apa pun, Anda melakukan rebase dari folder yang disinkronkan oleh layanan cloud (dropbox, drive, onedrive, dll), Anda harus menjeda atau mematikan sinkronisasi karena akan mengganggu izin selama rebase .

Dmase05
sumber
2

Bagi saya itu

rm -r .git-credentials.lock 
N Jay
sumber
2

Saya telah mengubah izin direktori saya sehingga saya tahu itu bisa terkait izin. Dalam kasus saya, saya menghapus pengguna yang tidak diinginkan (_www) dan kemudian menerapkan izin baca / tulis untuk semua orang dengan menerapkan perubahan ke semua konten. Ini di Mac

Izin Direktori pada Mac

Hammad Khan
sumber
2

Semua perintah hapus tidak berfungsi untuk saya apa yang saya lakukan adalah menavigasi di sana menggunakan jalur yang disediakan di git dan kemudian menghapusnya secara manual.

Aaron Rabinowitz
sumber
2

JANGAN GUNAKAN Plugin Atom platformio-atom-ide-terminal untuk melakukan ini. GUNAKAN TERMINAL DARI DISTRO ANDA SECARA LANGSUNG.

Saya terus mendapatkan kesalahan ini ketika rebasing / squishing melakukan dan tidak tahu mengapa karena saya telah melakukannya sebelumnya beberapa kali.

Tidak masalah berapa kali saya akan menghapus index.lockfile, setiap kali itu akan gagal.

Ternyata itu karena saya menggunakan plugin terminal ATOM EDITOR . Setelah saya menggunakan terminal yang dikirimkan bersama Ubuntu, ia bekerja seperti pesona.

juliangonzalez
sumber
2

cukup buka D: /project/androidgc/.git/ direktori ini dan hapus index.lock ini berfungsi untuk saya.

avez raj
sumber
1

Jika seseorang menggunakan git svn, saya mempunyai masalah yang sama tetapi tidak dapat menghapus file karena tidak ada !. Setelah memeriksa izin, menyentuh file dan menghapusnya, dan saya tidak ingat apa lagi, ini berhasil:

  • checkout cabang utama.
  • git svn rebase (pada master)
  • checkout cabang yang sedang Anda kerjakan
  • git svn rebase
cauchy
sumber
1

Sedikit menambahkan karena saya harus menggunakan jawaban yang berbeda untuk mendapatkan solusi yang sebenarnya (untuk saya).

Ini melakukannya untuk saya:

  1. Buka cabang yang sedang Anda kerjakan
  2. Buka terminal (saya menggunakan terminal di Git GUI)
  3. Ketikkan perintah: cd .git
  4. Ketikkan perintah: rm -f index.lock

Beberapa mungkin harus menggunakan -Forcesebagai gantinya -f. Anda dapat memeriksa baris perintah terminal Anda dengan mengeksekusi perintah pada sesuatu terminal Anda seperti: git help.

Ronnie Oosting
sumber
0

Semua solusinya benar:

Just remove .git from your corrupted repository, 

then copy this file if back from another clone (if you don't have it in another machine, just clone it).

Akhirnya, apa yang membuat perbedaan bagi saya:

  • Hindari menggunakan sudo untuk membuka zip atau menyalin folder .git yang baru. Git tidak akan memiliki akses ke folder .git jika Anda menggunakan hak pengguna super untuk membuatnya
Javi
sumber
0

Saya mengalami hal ini ketika saya berada di subdirektori dari direktori yang sesuai dengan folder root dari repo (yaitu direktori di mana .git berada). Pindah ke direktori root memecahkan masalah - dengan biaya membuat semua referensi file sedikit lebih tidak nyaman karena Anda harus pergi path / ke / folder / foo.ext bukan hanya foo.ext

SN
sumber