我已經在我的功能分支(遠程)中推送了 2 個提交,但現在我必須恢復該分支的最新提交。
例如先提交 A 最新提交 B
在這里我想洗掉提交 A 并希望保留更改,因為它在提交 B 中
我可以在谷歌中看到很多解決方案,但不確定該怎么做?有人說進行更改并再次將更改推送到遠程。有人說要洗掉最后一次提交并重寫歷史記錄。
我不想丟失第一次提交的更改。并且只想從遠程分支中洗掉最新的提交。
uj5u.com熱心網友回復:
git revert一種簡單的方法是創建一個新的提交,使用該操作取消提交 A 的更改。
這種方法的優點是不改變提交歷史,這使得其他用戶可以直接拉取特性分支。
- 在您的本地存盤庫中,執行以下命令:
git revert <sha-of-commit-A>
- 輸入一條提交訊息,例如“撤消提交-A 的更改”
- 然后將功能分支推送到遠程。
feature 分支將只包含 commit-B 的更改。
包含更多詳細資訊的參考文章。
uj5u.com熱心網友回復:
注意:我推薦 Mehdi 的回答,因為它是更安全的方法,但我會保留我的回答,以防您希望從歷史記錄中洗掉還原的提交。
這應該相對簡單,請按照以下步驟操作(我假設本地功能分支稱為localFeatureBranch):-
1- 創建您的功能分支的本地備份(以防出現問題):-
git checkout localFeatureBranch
git branch localFeatureBranchBackup
2- 現在您有了備份,洗掉最新的提交(最好先確保您沒有任何需要提交的更改):-
git reset --hard HEAD~1
以上將完全洗掉最后一次提交以及任何已暫存/未暫存的更改,因此使用上述命令時請小心。一個更寬容的命令是 git reset --soft HEAD~1,但是你必須一個一個地轉到檔案并取消暫存它們/恢復它們。
3-現在強制將您的更改推送到遠程分支:-
git push origin localFeatureBranch --force
并不總是推薦強制推送一個分支,特別是如果有多個人在同一個遠程分支上作業,但如果你是唯一一個在這個分支上作業的人并且你已經在本地備份了它(你應該在步驟 1 中),那么它應該是一種無害的運動。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/534319.html
標籤:混帐比特桶
