删除旧的提交但保留最近的提交

时间:2020-04-13 15:26:27

标签: git git-commit

不久前,我基于同事分支创建了一个分支,并开始进行一些更改。现在,在进行了大约一周的更改之后,事实证明,我们希望从上周初开始删除一些提交,但是我们希望保留一些最新的提交。

例如,如果提交历史记录看起来像这样:

0123456 commit-information
6543210 commit-information
1029384 commit-information
1234567 commit-information

0123456是最早的提交,而1234567是最新的提交。有没有办法删除前两个提交但保留最后两个提交?

编辑:前两个提交和后两个提交不相互依赖。

2 个答案:

答案 0 :(得分:1)

很少有选择:

  1. 将旧提交保留在您的历史记录中,而只是“删除”内容

    git revert <sha1> <sha2>
    
  2. “获取”所需的2次提交到目标分支

    # "Apply" the required changes to your branch
    git cherry-pick <SHA1->
    

enter image description here

答案 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