簡體   English   中英

egit 鎖失敗日食

[英]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/somenamefeature/somename但是當我把它推到remote ,它們顯示為Feature/somename 一旦我解決了這個fF問題,事情就開始按預期工作。


使用 EGIT 修剪

此外,如果您想prune存儲庫,您應該使用 GIT GC 來實現這一點。 EGIT 有一個名為“ Collect Garbage的選項來觸發此操作。 只需在 EGIT 透視圖中右鍵單擊存儲庫即可查看此選項。

對我來說,我遇到了標簽中的鎖定失敗問題,因此我執行以下步驟:

  1. 重置當前分支
  2. 刪除所有本地標簽。
  3. 拿來
  4. 拉。 它解決了這個問題。

對於其他人:我也有這個錯誤,那是因為我在 repo 上有 2 個具有相似名稱的分支(“v10”和“V10”)。 我通過“重命名”repo 分支“V10”來修復它(即從“V10”創建另一個“V10b”,然后刪除“V10”)。

我用了阿拉什的

git remote prune origin

但這給我留下了一種情況,在這種情況下,egit pull 使我領先於遠程/起源。 一個 egit 或 git push 恢復同步,但是下一個 egit pull 讓我再次領先。 為了解決這個問題,我嘗試了各種方法,包括重置回購,但無濟於事。 這可能類似於從新工作區開始,但在我的情況下,這不是一個選項。 以下似乎有效:

  1. 確保您已將所有更改推送到遠程存儲庫。
  2. 在 Project Explorer 視圖中,從相關存儲庫中刪除所有已導入 eclipse 的項目。 不要刪除文件系統中的文件(彈出的對話框中的復選框)。
  3. 在存儲庫視圖中,右鍵單擊存儲庫並從視圖中刪除存儲庫
  4. 在命令行。 移動或刪除 git repo 的根目錄。
  5. 返回 Eclipse 並添加存儲庫(在存儲庫視圖中,粘貼從 github 復制的 URL/ssh 鏈接)。
  6. 通過右鍵單擊 repo 並選擇 Import Projects... 將所需的項目重新導入到 Eclipse 中。

丑陋但有訣竅。

我在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM