我在分支“testing”上意外地提交了10个更改,但本来打算将它们提交到“master”分支。由于“testing”分支上的其他更改都是垃圾,所以我不想将其与“master”合并。相反,我只想在“master”上重新播放最后的10个提交。
我在分支“testing”上意外地提交了10个更改,但本来打算将它们提交到“master”分支。由于“testing”分支上的其他更改都是垃圾,所以我不想将其与“master”合并。相反,我只想在“master”上重新播放最后的10个提交。
使用变基应该可以解决问题。
git rebase -p --onto master testing~10 testing
这将把测试分支上的最近10次提交复制到主分支并使其成为新的测试分支(旧的测试分支将成为孤儿分支)。然后,您可以将主分支作为快进合并到测试分支。git checkout master
git merge testing
?
git cherry-pick
目前可以一次选择多个提交(例如,git cherry-pick testing~10..testing
)。 - Max Nanasyrebase
启发的答案是将“垃圾”提交孤立。git checkout master
git merge testing
git checkout testing
git reset --hard HEAD~10 # Go back 10 commits (*1)
git checkout master
(*1) 由于合并操作,您将只会失去来自 testing
分支的提交记录,因为这些提交记录已经在 master
中了。
-p
(保留)标志现已被弃用(当您尝试使用它时,会出现“fatal: --preserve-merges已被--rebase-merges替代”的错误提示,我的git版本为2.38.0)。 - Sandra