首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git -删除中间的多次提交。

git -删除中间的多次提交。
EN

Stack Overflow用户
提问于 2018-05-10 12:43:52
回答 1查看 1.3K关注 0票数 0

git日志场景:

承诺1

承诺2

承诺3

承诺4

承诺5

承诺6

我需要删除使最终git日志之间的提交2-4作为

承诺1

承诺5

承诺6

做这件事最好的方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-05-10 12:56:01

这就是重基的目的:更改提交的历史记录。

备注:重基或任何其他更改提交历史的操作都将更改每个提交的提交哈希,因此历史记录彼此不兼容,如果任何已更改的提交已经被推送,则不能使用修改的历史记录进行git push提交。您应该只对您在本地进行的更改执行此操作,但还不能按此操作。

如果您的Git日志看起来像这样,那么首先:

代码语言:javascript
复制
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)。这将打开一个编辑器,其中包含所有提交的列表:

代码语言:javascript
复制
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,以更改它的更改方式:fixupsquash将删除提交,但保留更改(它们合并到前一个提交中),而drop将删除提交和其中的更改。然后保存,关闭编辑器,git将重新基础并将您指定的更改应用到Git历史记录中。

在您的示例中,如果要删除提交但保留更改,则可以这样做

代码语言:javascript
复制
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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50273279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档