簡體   English   中英

如何在 git 中恢復我的功能分支(遠程)上的最后(最新)提交

[英]How to revert last(latest) commit on my feature branch(Remote) in git

我已經在我的功能分支(遠程)中推送了 2 個提交,但現在我必須恢復該分支的最新提交。

例如先提交 A 最新提交 B

在這里我想刪除提交 A 並希望保留更改,因為它在提交 B 中

我可以在谷歌中看到很多解決方案,但不確定該怎么做? 有人說進行更改並再次將更改推送到遠程。 有人說要刪除最后一次提交並重寫歷史記錄。

我不想丟失第一次提交的更改。 並且只想從遠程分支中刪除最新的提交。

一種簡單的方法是創建一個新提交,使用git revert操作取消提交 A 的更改。

這種方法的優點是不改變提交歷史,這使得其他用戶可以直接拉取特性分支。

  • 在您的本地存儲庫中,執行以下命令:
git revert <sha-of-commit-A>
  • 輸入一條提交消息,例如“撤消提交-A 的更改”
  • 然后將功能分支推送到遠程。

feature 分支將只包含 commit-B 的更改。

包含更多詳細信息的參考文章

注意:我推薦 Mehdi 的回答,因為它是更安全的方法,但我會保留我的回答,以防您希望從歷史記錄中刪除還原的提交。

這應該相對簡單,請按照以下步驟操作(我假設本地功能分支稱為localFeatureBranch ):-

1- 創建功能分支的本地備份(以防 go 出錯):-

git checkout localFeatureBranch
git branch localFeatureBranchBackup

2- 現在您有了備份,刪除最新的提交(最好先確保您沒有任何需要提交的更改):-

git reset --hard HEAD~1

以上將完全刪除最后一次提交以及任何已暫存/未暫存的更改,因此使用上述命令時請小心。 一個更寬容的命令是 git reset --soft HEAD~1,但是你必須 go 一個一個地文件並取消它們/恢復它們。

3-現在強制將您的更改推送到遠程分支:-

git push origin localFeatureBranch --force

並不總是推薦強制推送一個分支,特別是如果有多個人在同一個遠程分支上工作,但如果你是唯一一個在這個分支上工作的人並且你已經在本地備份了它(你應該在步驟 1 中),那么它應該是一種無害的運動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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