不久前,我基于同事分支创建了一个分支,并开始进行一些更改。现在,在进行了大约一周的更改之后,事实证明,我们希望从上周初开始删除一些提交,但是我们希望保留一些最新的提交。
例如,如果提交历史记录看起来像这样:
0123456 commit-information
6543210 commit-information
1029384 commit-information
1234567 commit-information
0123456
是最早的提交,而1234567
是最新的提交。有没有办法删除前两个提交但保留最后两个提交?
编辑:前两个提交和后两个提交不相互依赖。
答案 0 :(得分:1)
很少有选择:
将旧提交保留在您的历史记录中,而只是“删除”内容
git revert <sha1> <sha2>
“获取”所需的2次提交到目标分支
# "Apply" the required changes to your branch
git cherry-pick <SHA1->
答案 1 :(得分:0)
第三个选择是使用git rebase保持删除分支中的大量提交
此类命令的通用格式为:
git rebase -p --onto <SHA_First_commit_to_remove>^ <SHA_First_commit_to_keep>^ <branch>
假设您的分支名称为“ mybranch”,并且OP中的SHA变为:
git rebase -p --onto 0123456^ 1029384^ mybranch