Ketika saya melakukan 'git commit', saya mendapatkan yang berikut:
fatal: Unable to create 'project_path/.git/index.lock': File exists.
Namun, ketika saya melakukannya ls project_path/.git/index.lock
mengatakan file tersebut tidak ada. Adakah pemikiran tentang apa yang harus saya lakukan? Saya juga memperhatikan bahwa project_path / .git dimiliki oleh root, tidak yakin apakah itu ada hubungannya dengan masalah yang saya temui.
versi git adalah 1.7.5.4
sunting: Tampaknya masalah yang paling mungkin adalah proses lain yang telah saya jalankan, yaitu menulis (tanpa sepengetahuan saya) ke direktori proyek. Saya me-restart mesin saya dan kemudian saya tidak punya masalah melakukan.
Jawaban:
Ini mungkin jawaban lama tapi saya berharap ini lebih berguna untuk selanjutnya yang membutuhkan solusi ini.
Di linux / unix / gitbash / cygwin, coba
rm -f .git/index.lock
Di Windows Command Prompt, coba:
del .git\index.lock
sumber
fatal: Unable to create 'project_path/.git/index.lock': File exists.
, ia mengatakan "File ada", dan menghapusnya akan menjadi solusi sederhana. Mengapa saya menyarankan menghapus file jika tidak ada dalam pertanyaan asli?Untuk Windows:
sumber
Pada platform Windows yang menjalankan Visual Studio 2015 RC (v4.6.00057) dalam kombinasi dengan SourceTree (v1.6.14.0) akan memberikan kesalahan ini juga.
Solusi: Dengan asumsi Anda ingin menggunakan pohon kode sebagai pengelola kode sumber, cukup nonaktifkan penyedia kontrol sumber di dalam Visual Studio seperti ini:
sumber
sumber
mencoba
jika Anda tidak memiliki proses git lain yang berjalan, maka cukup hapus file index.lock dari masing-masing proyek.
sumber
Baru saja mengalami masalah ini ... Gitbox salah. Jadi mungkin Anda menjalankan GUI yang menyebabkan masalah.
sumber
Ini terjadi ketika Anda membatalkan penarikan dari asal di tengah.
jadi yang dapat Anda lakukan adalah menghapus file index.lock secara manual dari direktori .git Anda.
cd ke direktori proyek Anda dan jalankan perintah ini.
sumber
(Jika file dibuat, cukup dari cd ke lokasi itu, maka masalahnya adalah editor Anda. Tutup editor Anda. Jangan gunakan editor ini lagi untuk tugas ini. Buka editor yang berbeda - catu daya windows atau cukup cmd. Sekarang Anda dapat menggunakan perintah git untuk melanjutkan)
sumber
Mungkin (telah terjadi pada saya), perintah ls mengatakan itu tidak ada karena pengguna saat ini tidak memiliki izin untuk mencapai direktori atau file itu.
Hapus kunci dan pastikan Anda mengeksekusi git dengan pengguna yang tepat untuk menghindari masalah izin.
Jika Anda berada di kotak GNU / Linux dengan perintah sudo :
sumber
ls project_path/.git/index.lock
.del .git\index.lock
bekerja untukku.Saya menghadapi masalah ini saat checkout cabang baru dari cabang utama.
Checkout mudah terjadi setelah menghapus
index.lock
file.sumber
Terkadang Git membuat file kunci yang terkait dengan repo Anda saat Anda membuat perubahan atau kemungkinan besar saat Anda menggunakan sub modul. Pesan kesalahan akan menunjukkan kepada Anda jalur file kunci. Perbaiki: Cukup buka jalur di terminal secara manual dan hapus file kunci dengan $ rm index.lock
Itu akan membantu.
sumber
Saya punya masalah dengan SourceTree ketika berpindah cabang dengan mengklik dua kali di atasnya. Masalahnya tidak terlalu umum dan Atlassian tahu tentang itu tetapi mereka memutuskan untuk tidak memperbaikinya.
Untungnya ada solusinya. Alih-alih mengklik dua kali pada cabang yang ingin Anda alihkan, cukup klik kanan dan pilih "Checkout [nama cabang]". Itu harus berhasil sekarang.
sumber
Saya telah menemukan skenario yang sama. Saya bahkan belum melakukan perubahan pada kode lokal saya. Saya baru saja mengedit file dan mengembalikannya. Saya hanya menghapus file di bawah ini di folder .git tersembunyi. Berhasil!
sumber
Kecuali Anda benar-benar bermaksud untuk root untuk memiliki repo Anda, ini terdengar seperti Anda secara tidak sengaja menjalankan perintah Git sebagai root (mungkin bahkan klon / init awal). Jika Anda bermaksud melakukan itu, maka Anda harus hidup dengan menjalankan semua perintah Git di repo sebagai root. Jika tidak, jalankan
sudo chown your-user[:your-group] -R .git
untuk mengambil kepemilikan itu, dan kemudian melihat apakah semuanya bekerja.sumber
.git
dan saya memperbaikinya dengan:find .git -type f -exec chmod 644 {} \;
dan jugafind .git -type d -exec chmod 755 {} \;
saya telah mengacaukan mode ketika memindahkan proyek git saya dari satu komputer ke komputer lainsudo chmod g+w .git -R
Banyak klien git yang bekerja pada repositori lokal yang sama bersaing untuk kunci itu. Setiap klien harus menunggu sampai kunci dilepaskan oleh pihak lain untuk menjadi warga negara yang baik. Bagi kami, SourceTree atau MSVS tampaknya melakukan beberapa pemeliharaan di latar belakang saat kami menjalankan skrip komit besar.
Mungkin 'git' sendiri harus mendukung argumen '--retriesWhenLocked 5' untuk mendukung percobaan ulang.atau bahkan default untuk ini ketika dijalankan secara manual.
Berikut ini adalah pembungkus PowerShell di sekitar git bernama "gitr" yang mencoba lagi sampai index.lock menghilang, menggunakan percobaan 5 standar, masing-masing 3 detik. Itu tidak pernah menghapus index.lock, dengan asumsi pengguna harus turun tangan. Itu diekstraksi dari skrip komit yang lebih besar. Ini hanya memiliki pengujian minimal dengan argumen sederhana.
gitr.ps1
sumber
Saya juga punya pertanyaan ini di windows 10.
ketika saya mencoba del
./.git/index.lock
, itu memberitahu sayacannot remove 'index.lock': Device or resource busy
Saya akhirnya mendapatkan alasannya:
komputer memiliki dua proses untuk menggunakan git:
jadi saya menggunakan cmder.exe untuk
git commit
itu akan terjadi kesalahan.jadi solusinya gunakan
git bash
atau Hentikangit bash
kemudian gunakan cmder.exesumber
Saya memiliki kesalahan yang sama persis, tetapi masalahnya bukan file kunci. Sebaliknya masalahnya adalah bahwa saya telah menyalin isi dari repo git lain ke repo ini, termasuk folder .git tidak terlihat. Jadi, SourceTree bingung tentang repo yang ingin saya tampilkan file (ada ketidakcocokan antara repo SourceTree pikir saya berada di, dan yang repo isi .git dir tertanam saya mengatakan saya harus berada di).
sumber
Saya punya masalah dengan TortoiseGit dengan Cygwin di Windows. Saya tidak dapat menghapus hapus ./.git/index.lock bahkan dengan hak administratif, saya mencoba Cygwin dan command prompt, katanya file itu digunakan oleh proses lain.
Saya menemukan bahwa saya memiliki 2 contoh menjalankan TortoiseProc.exe. Saya membunuh salah satu dari mereka, dan menutup semua windows explorer windows saya, dan kemudian dapat menghapus file tersebut. Saya tidak tahu apakah membunuh sebuah instance dari TortoiseProc.exe adalah solusi atau menutup windows explorer windows.
sumber
Solusi bagi saya adalah menghapus file .index dan mengizinkan Git untuk membangun kembali file lain.
sumber
Saya tidak memiliki file inex.lock untuk dihapus, tetapi apa yang berhasil bagi saya adalah menghapus centang Read-Only dari jendela Attributes pada dialog Properties folder.
sumber
Saya membuat file index.lock kosong, menghapusnya menggunakan perintah windows
sumber
Mulai git 2.8.4 (Juni 2016) , ini seharusnya tidak terjadi lagi.
Lihat masalah 755 yang juga harus meringankan masalah ( komit 2db0641 ):
sumber
Dalam aplikasi sourceTree saya, saya tidak dapat melakukan komit atau beralih ke komit / brach lainnya. Waktu itu menunjukkan kesalahan seperti
fatal: Tidak dapat membuat bla bla bla ..
Saya cukup menyelesaikan ini dengan folder goto .git (di project Explorer Dir). Dan hapus Indeks ----- [jenis file: file LOCK]. Sekarang saya mendapatkan kembali semua akses di sourceTree ..
pastikan file kunci indeks. misalkan Anda tidak mendapatkan tipe file, ubah pengaturan tampilan file di komputer. Catatan: folder .git biasanya merupakan tipe folder yang tersembunyi.
sumber
Apa yang dilakukan untuk saya adalah:
git rebase --abort
dan mulai kembali rebase.Seperti yang disebutkan Andrew, saya juga menggunakan PHPStorm saat ini terjadi. Tidak harus menutupnya.
sumber
Pertama, Anda harus menavigasi ke folder spesifik proyek Anda .. Seperti jika nama proyek Anda adalah Firstproject maka pertama pergi ke direktori proyek .. kemudian ketik cd .git kemudian setelah menavigasi ke folder git ketik del index.lock After penghapusan file index.lock..Anda akan dapat melakukan dan mendorong seperti sebelumnya
sumber
Dalam kasus saya, itu windows, tidak ditutup sepenuhnya.
Windows hibernasi, ditolak untuk dipasang
Kemungkinannya adalah Windows benar-benar di-hibernasi. Windows melakukan ini secara otomatis ketika Anda memintanya untuk mematikan secara normal. Manfaatnya adalah Anda mendapatkan waktu start-up yang lebih cepat.
Untuk mematikan Windows tanpa melakukan hybernasi, lakukan hal berikut pada command-prompt (di Windows):
Anda mungkin juga ingin menyertakan
/t 0
untuk mematikan segera.Saya menemukan tutorial yang bagus untuk menyiapkan peluncur untuk ini: Cara Melakukan Shutdown Penuh di Windows 8 Tanpa Menonaktifkan Boot Hybrid.
Pendekatan yang lebih sederhana untuk benar-benar mematikan Windows adalah dengan 'restart' (bukan 'shutdown'), tetapi kemudian mencegat proses boot dan boot Linux bukannya membiarkannya boot Windows.
kredit : mulia
sumber
Ini juga dapat terjadi jika Anda menggunakan klien baris perintah git alternatif, seperti hub .
Saya telah menggunakan hub sebagai pengganti alias untuk git selama beberapa tahun, tetapi baru-baru ini menulis skrip bash yang melakukan banyak git bekerja di dalamnya, dan mulai mendapatkan masalah kunci indeks ini.
Saya tidak dapat menemukan perbaikannya sampai saya ingat saya menjalankan hub bukan git. Saya menghapus itu dan masalahnya hilang!
sumber
Mendapatkan kesalahan:
Tapi saya tidak bisa menemukan (juga menghapus) file .git / index.lock itu.
Dalam kasus saya, git-cola sedang berlari!
Itu jelas menciptakan .git / index.lock setiap sesekali, atau disebabkan oleh rebase yang saya lakukan pada baris perintah dan selama itu saya menerima kesalahan itu - jadi git-cola jelas-jelas "mengganggu" perintah baris menjalankan Git (atau beberapa operasi Git CLI).
Ini diselesaikan dengan menutup git-cola selama perintah baris git rebase.
sumber
Terkadang klien Git lain dapat mengganggu ketika ada banyak yang diinstal.
Yaitu. pastikan dengan Task Manager atau
Get-Process
yangTGitCache
dari TortoiseGit tidak aktif di latar belakang.sumber
Saya memiliki masalah yang sama baru-baru ini. Jika Anda akan memeriksa seluruh pesan kesalahan itu juga mengatakan bahwa ada beberapa proses yang menggunakan proses git yang menghalangi Anda untuk menghapus index.lock. Anda mungkin memiliki IDE yang terbuka seperti Visual Studio atau perangkat lunak terkait yang terintegrasi dengan git. Tutup dan coba menyimpan kembali file Anda. Semoga ini bisa membantu.
sumber