[英]How to safely undo commits that already in remote master branch & move them into another branch?
[英]How to cancel commits on master and move them to branch
我有問題 我已經對master進行了兩次提交。 但是我犯了一個錯誤。 我需要在branch_a上執行這些提交。 如何取消master上的提交並將其移到branch_a。
假設沒有其他人看到您對master所做的更改,並在此基礎上構建了一些東西:
git checkout branch_a
git cherry-pick <commit sha> # for each commit you want on branch a
git checkout master
git reset <commit sha you want to move master back to>
如果有人已經建立在你的主意外的提交頂部的東西,那么你要git revert
他們,而不是使用reset
。
如果您只有幾次提交,那么櫻桃選擇它們可能是最簡單的選擇。 您可以通過git log master
找到提交的哈希值。 然后執行以下操作。
git checkout branch_a
git cherry-pick COMMIT_HASH_1
git cherry-pick COMMIT_HASH_2
...
git checkout master
git reset --hard COMMIT_HASH_BEFORE
所有COMMIT_HASH_#
是提交要移動到branch_a
和COMMIT_HASH_BEFORE
是從你的錯誤提交之前提交哈希值。 (請注意,這將丟棄工作目錄中所有未提交的更改。)
請注意,如果您已經將更改推送到master
並且其他人可能已經在分支中使用過,那么您將想git revert
原來選擇的提交,否則會給在該分支上工作的其他人帶來問題。 (還原只是創建一個新的提交,它會撤消之前的提交。)
imo最好的辦法是重置master分支,但保留您的更改。 使用cherry-pick將使用新提交污染回購。 假設您進行了兩次提交:
git checkout master
git reset --soft HEAD~2
git checkout branch_a
git commit -m "foo"
使用--soft重置意味着您的更改將被保留,並且會將git置於提交提交之前的狀態,因此您只需要切換分支並重新提交更改即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.