2013-11-28 51 views
3

我目前有這個問題,我需要刪除我的.git/index.lock文件。沒有太多的猶豫,我猜測這個文件以某種方式鎖定了可以訪問git倉庫的進程。然而,我似乎無法找到一個很好的描述/文件的文件實際上做什麼,以及爲什麼你遇到的問題描述爲例如in this question(link).git/index.lock文件實際上做了什麼?

index.lock實際上做了什麼,以及導致人們與此文件相關的問題的原因是什麼?

這將是非常好的知道,所以我可以在將來防止這個問題。

回答

2

我發現這個從https://www.kernel.org/pub/software/scm/git/docs/technical/api-lockfile.html。這告訴你什麼.git/index.lock

  • 相互排斥。當我們寫出一個新的索引文件時,首先我們創建一個新文件$GIT_DIR/index.lock,將新的 內容寫入其中,並將其重命名爲最終目標 $GIT_DIR/index。我們嘗試使用O_EXCL創建$GIT_DIR/index.lock 文件,以便在有人 其他人已經嘗試更新索引文件時我們可以注意到並失敗。
  • 自動去除殘餘物。在我們創建「鎖定」文件後,我們 可能會決定die(),我們希望確保我們 刪除尚未提交到其最終目標 的文件。這是通過記住我們在鏈接列表中創建的鎖文件並從 atexit(3)處理程序清理它們來完成的。程序死於信號時,還會刪除未完成的鎖文件 。

我想這個問題的,你說的原因是一些操作系統自動克魯夫特清除故障。幾年前,我在Linux上使用Git,但尚未遇到此類問題。

相關問題