在git項目中我們提交代碼的時候經(jīng)常遇到這樣的報錯:
$ git commit -am'some messsage'
fatal: Unable to create '/XXXXXX/.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.
這時候提交會失敗。
解決辦法是,到.git目錄下,刪除index.lock文件,就能正常提交了。
那index.lock有什么作用呢?
官方是這么說的:
在進行某些比較費時的git操作時自動生成,操作結(jié)束后自動刪除,相當(dāng)于一個鎖定文件,目的在于防止對一個目錄同時進行多個操作。有時強制關(guān)閉進行中的git操作,這個文件沒有被自動刪除,之后你就無法進行其他操作,必須手動刪除。
通俗講,就是我們在commit的時候,會自動生成一個index.lock文件,操作完成后,會自動刪除。如果在commit過程中,產(chǎn)生了意外,比如手動退出了,電腦死機了,斷網(wǎng)了等等,導(dǎo)致操作失敗,沒有自動刪除index.lock文件,那么下次再commit的時候,系統(tǒng)不知道你的index.lock沒刪除,它會傻傻的再去創(chuàng)建index.lock文件,這時候,發(fā)現(xiàn)已經(jīng)目錄下已經(jīng)有一個index.lock文件了,懵逼了,不知道咋處理了,所以拋錯給你:
fatal: Unable to create '/XXXXXX/.git/index.lock': File exists.
字面意思就是,創(chuàng)建index.lock文件失敗,因為File exists:文件已存在。
這就是這個報錯的來源。