GitLab 伺服器在哪裡可以找到硬刪除的未推送的提交

GitLab 伺服器在哪裡可以找到硬刪除的未推送的提交

我的推送操作失敗,因為我的同事向我正在處理的同一個分支提交了一行,而我忘記了隱藏我的,所以我嘗試恢復我同事的提交並將其複製到我的更改中,這樣只有傳出的提交才會發生已經存在了,我想。它沒有按照我想要的方式工作,所以我嘗試重置他的提交,我右鍵單擊該提交,然後單擊“重置”->“刪除--硬”(在Visual Studio 中),這刪除了他和我的所有提交。

我再次提交了更改,只是未能將其推送到伺服器。我找到了該git reflog命令,但我不確定是否可以在不使用 Git 桌面用戶端的情況下使用它。

有沒有辦法使用 SSH 用戶端從伺服器找到我未推送的提交?或者我應該重寫一切?大約 50-100 行程式碼已遺失。

解決了:

使用左上角附近的 Visual Studio Git 選單 -> 在命令提示字元中打開,然後

git reflog 

然後

git cherry-pick <SHA-1> 

其中 SHA-1 是分支的頭部(例如 HEAD@{1}),如 user1686 答案中的以下連結所述。

答案1

要么git refloggit fsck --unreachable如所述https://stackoverflow.com/questions/30035998/deleted-branch-unexpectedly-git-in-visual-studio可以找到最近遺失的提交。

但是,復原方法需要在這些提交所在的儲存庫上執行之前可見。如果提交未成功推送,那麼它根本不會出現在 Git 伺服器上——它所在的唯一位置是 VS 中的本機 Git 儲存庫。

(雖然伺服器儲存庫上也可能有“reflog”,但只有在推送成功時它才會更新。例如,SSH 可以用於恢復已成功推送但被稍後的強制推送覆蓋的提交 –但不是那些被徹底拒絕的人。

我找到了“git reflog”命令,但我不確定是否可以在不使用 Git 桌面用戶端的情況下使用它。

「git reflog」來自Git 命令列工具,它們通常與大多數 Git 桌面用戶端捆綁在一起,但實際上並未與任何應用程式綁定。

您已經在使用 Git 桌面用戶端 – Visual Studio – 它還安裝了 Git 的副本,因此它應該足以存取cd您的來源目錄並git從那裡運行。

相關內容