[英]egit lock fail eclipse
因此,在工作中,我們都共享相同的存儲庫,我們推拉我們的分支以及所有好的 git 東西。 所以我通常在 eclipse 中從 egit 執行拉和推(我不是這里大多數人這樣做的唯一一個)。 但是我的一些分支機構開始給我 [鎖定失敗]“無法鎖定本地跟蹤引用以進行更新”。 但問題是有 75+ 人以同樣的方式做這件事,但沒有人看到過這個錯誤。 我做了一些研究,大部分研究表明它基於名稱沖突,例如 Foo 和 foo。 Egit 會混淆要拉哪個,因為唯一的區別是大寫字母,但其他人沒有問題。 我不知道發生了什么。 任何幫助將不勝感激。
git remote prune origin
為我解決了。
我既不能獲取也不能推送也不能變基,並且在 Eclipse 中也出現了“鎖定失敗”錯誤。
我找到的解決方案是打開 git bash,轉到 git 文件夾,然后執行git fetch
。 在此之后,我能夠使用 eclipse 進行變基和推送。
你也可以在你的eclipse偏好/團隊/git/configuration中檢查你沒有設置fetch.prune=true
因為它可能會導致這個問題。
我現在已經在 Eclipse 2019-06 中看到了幾次。 可能與標簽創建有關,因為它似乎是在這些事件之后最近發生的。 無論如何,我認為如果您關閉 Eclipse,並刪除 eclipse-workspace/.metadata/.lock 文件(可能還有 eclipse-workspace/.metadata/.log),它會在重新啟動時變得更好。
對我來說,問題是我有一堆分支,我把它們作為feature/somename
拉feature/somename
但是當我把它推到remote
,它們顯示為Feature/somename
。 一旦我解決了這個f
到F
問題,事情就開始按預期工作。
此外,如果您想prune
存儲庫,您應該使用 GIT GC 來實現這一點。 EGIT 有一個名為“ Collect Garbage
的選項來觸發此操作。 只需在 EGIT 透視圖中右鍵單擊存儲庫即可查看此選項。
對我來說,我遇到了標簽中的鎖定失敗問題,因此我執行以下步驟:
對於其他人:我也有這個錯誤,那是因為我在 repo 上有 2 個具有相似名稱的分支(“v10”和“V10”)。 我通過“重命名”repo 分支“V10”來修復它(即從“V10”創建另一個“V10b”,然后刪除“V10”)。
我用了阿拉什的
git remote prune origin
但這給我留下了一種情況,在這種情況下,egit pull 使我領先於遠程/起源。 一個 egit 或 git push 恢復同步,但是下一個 egit pull 讓我再次領先。 為了解決這個問題,我嘗試了各種方法,包括重置回購,但無濟於事。 這可能類似於從新工作區開始,但在我的情況下,這不是一個選項。 以下似乎有效:
丑陋但有訣竅。
我在 Windows 中看到過這種情況,因為底層的 DOS 文件系統不區分大小寫,盡管 git 不是。 當 git 寫入名為“foo”的文件時,Windows 認為寫入文件“Foo”的嘗試正在寫入同一個文件。 我不知道創建“鎖定失敗”錯誤的確切機制,但我認為它是這樣的。
我寫了一個腳本來檢測這種情況。 我們的 SCM 是 BitBucket,它有一個 REST api。 我在循環中使用“projects/repos/branches”端點從存儲庫中獲取所有分支,執行以下偽代碼:
echo $list | tr '[:upper:]' '[:lower:]' | sort | uniq -d
結果是一個分支名稱列表,轉換為小寫,具有兩個或多個版本,因大小寫而異。
在 Eclipse 中右鍵單擊項目
這很簡單。
1 - 關閉 Eclipse IDE; 2 - 轉到項目目錄; 3 - 類型: git pull
; 4 - 類型: git gc
; 5 - 重新打開 Eclipse IDE; 6 - 拉動項目;
總是對我有用!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.