我對 GIT 的經驗很少,所以我問的可能聽起來有點奇怪。我們有一個 Azure Devops 存盤庫,每天都有提交。
9 月 3 日,在我們的 Azure Devops 存盤庫中發生了一些更改的提交。這是承諾的,但從未推動過。從那以后開發人員就缺席了,在過去的 2 個月里發生了很多提交。然后,在 10 月 21 日,9 月 3 日的提交與中間的所有提交合并并最終推送。
有沒有辦法恢復合并的提交(發生在 10 月 21 日)和提交本身(發生在 9 月 3 日),而不會丟失其間的所有提交?
這發生在 Azure Devops 中,提交和推送主要通過 Visual Studio 2019 進行。
uj5u.com熱心網友回復:
正如@RomainValeri在評論中指出的那樣,該git revert命令就是您在此處查找的內容。
首先,讓我們想象一下情況:
o---o---o---o---o---X---M
\ /
A----------------
在這里,commitA是 9 月 3 日M的提交,是 10 月 21 日的合并提交。
您提到您只想恢復A從包含M. 您可以通過以下方式恢復合并提交M:
git revert -m 1 M
哪里M是指向合并提交的參考。
現在,由于合并提交有 2 個或更多父項,您還需要告訴 Git 它應該使用哪個父項作為基線來確定它應該恢復哪些更改。這就是-m( --mainline)選項的用途。在這種情況下,我們希望目標分支(即A合并到的分支)作為基線,所以我們說-m 1,也就是第一個父級。
這將應用M(在本例中,X)和A新提交的第一個父級之間的差異的反向W:
o---o---o---o---o---X---M---W
\ /
A----------------
通常將合并提交的反向稱為W,因為它看起來像顛倒的M。
請記住,還原合并提交會撤消更改,但不會撤消 history。換句話說,Git會仍然認為與合并分支M被合并,甚至之后W。如果您再次嘗試合并它,Git 會告訴您一切都是最新的。
因此,如果您想在將來再次合并同一個分支,則必須先還原還原。請查看Git 檔案中的此操作方法,以了解有關如何執行此操作的詳細資訊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/336689.html
標籤:混帐 视觉工作室 azure-devops git提交 git-revert
上一篇:從組合框類中按索引獲取值
