git日志场景:
承诺1
承诺2
承诺3
承诺4
承诺5
承诺6
我需要删除使最终git日志之间的提交2-4作为
承诺1
承诺5
承诺6
做这件事最好的方法是什么?
发布于 2018-05-10 12:56:01
这就是重基的目的:更改提交的历史记录。
备注:重基或任何其他更改提交历史的操作都将更改每个提交的提交哈希,因此历史记录彼此不兼容,如果任何已更改的提交已经被推送,则不能使用修改的历史记录进行
git push提交。您应该只对您在本地进行的更改执行此操作,但还不能按此操作。
如果您的Git日志看起来像这样,那么首先:
4e4c39d Commit 1
fbdb7a2 Commit 2
f32770f Commit 3
de3f6dd Commit 4
942266a Commit 5
a7e80a4 Commit 6然后可以运行git rebase -i 434c39d (其中434c39d是您不想更改的最古老的提交,在本例中是Commit 1)。这将打开一个编辑器,其中包含所有提交的列表:
pick 4e4c39d Commit 1
pick fbdb7a2 Commit 2
pick f32770f Commit 3
pick de3f6dd Commit 4
pick 942266a Commit 5
pick a7e80a4 Commit 6您可以更改每个提交的pick,以更改它的更改方式:fixup和squash将删除提交,但保留更改(它们合并到前一个提交中),而drop将删除提交和其中的更改。然后保存,关闭编辑器,git将重新基础并将您指定的更改应用到Git历史记录中。
在您的示例中,如果要删除提交但保留更改,则可以这样做
pick 4e4c39d Commit 1
fixup fbdb7a2 Commit 2
fixup f32770f Commit 3
fixup de3f6dd Commit 4
pick 942266a Commit 5
pick a7e80a4 Commit 6如果不希望保留这些提交中的更改,则可以将fixup改为drop。
https://stackoverflow.com/questions/50273279
复制相似问题