删除旧的提交但保留最近的提交
Removing old commits but keeping recent commits
不久前,我在同事分支的基础上创建了一个分支,并开始进行一些更改。现在,在进行了大约一周的一些更改后,我们发现上周初的一些提交我们想删除,但我们想保留一些最近的提交。
例如,如果提交历史如下所示:
0123456 commit-information
6543210 commit-information
1029384 commit-information
1234567 commit-information
其中 0123456
是最早的提交,1234567
是最近的提交。有没有办法删除前两个提交但保留最后两个提交?
编辑:前两次提交和最后两次提交不相互依赖。
几个选项:
在您的历史中留下旧的提交,只留下 "remove" 内容
git revert <sha1> <sha2>
"grab" 所需的 2 个提交到目标分支
# "Apply" the required changes to your branch
git cherry-pick <SHA1->
第三种选择是使用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
不久前,我在同事分支的基础上创建了一个分支,并开始进行一些更改。现在,在进行了大约一周的一些更改后,我们发现上周初的一些提交我们想删除,但我们想保留一些最近的提交。
例如,如果提交历史如下所示:
0123456 commit-information
6543210 commit-information
1029384 commit-information
1234567 commit-information
其中 0123456
是最早的提交,1234567
是最近的提交。有没有办法删除前两个提交但保留最后两个提交?
编辑:前两次提交和最后两次提交不相互依赖。
几个选项:
在您的历史中留下旧的提交,只留下 "remove" 内容
git revert <sha1> <sha2>
"grab" 所需的 2 个提交到目标分支
# "Apply" the required changes to your branch git cherry-pick <SHA1->
第三种选择是使用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