簡體   English   中英

如何取消母版上的提交並將其移到分支

[英]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_aCOMMIT_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.

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