我有一個名為的分支devbranch和一個分支master。XYZ如果我從分支中挑選了一個提交,然后我從 中恢復或重置devbranch提交,那會恢復或重置影響、恢復或恢復分支的提交嗎?masterXYZdevbranchXYZmaster
uj5u.com熱心網友回復:
快速回顧一些關鍵概念:
- git 存盤庫由提交組成。
- 每個提交都包含所有檔案的快照,以及一些元資料,包括零個或多個(但通常是一兩個)指向父提交的鏈接。
- 歷史是通過從一個已知的提交到它的父母的向后作業來檢查的。
- 分支只是指向提交的指標,為您提供可以向后查看歷史的地方。
現在一些細節:
git cherry-pick查看提交,將其與其父級進行比較,然后在其他地方復制相同的更改作為新的提交。新提交與原始提交沒有任何關系。git revert做同樣的事情,但“相反”:它將提交與其父項進行比較,然后應用與該更改相反的內容。同樣,它創建了一個與原始提交無關的全新提交。
所以,回到你的問題:
- 您有兩個獨立的提交 - 您在“devbranch”上提交的原始提交“XYZ”;以及當您選擇“master”時創建的不同提交
- 運行時
git revert,您將創建第三次提交,撤消“XYZ”的更改
作為替代方案,你可以“重寫歷史”,這實際上意味著創造一個新的歷史(我喜歡把它想象成進入一個平行宇宙)。例如,您可以使用“互動式變基”來重放所有提交,除了您想要“從歷史中洗掉”的提交。
uj5u.com熱心網友回復:
恢復提交只是在當前分支上創建相反的提交。它不會影響其他分支。您還需要在 master 分支上恢復 cherry-pick 提交,或者您可以從 dev 分支中選擇恢復提交。結果都是一樣的,但這取決于你希望如何記錄你的歷史。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/414067.html
標籤:
上一篇:如何將一個git存盤庫(包括所有分支)覆寫到另一個git存盤庫
下一篇:撤消功能分支合并
