Git:在保持以下提交的同时删除特定提交

时间:2015-12-10 21:19:42

标签: git

如何删除提交,但保持后续提交完好无损?

在这种情况下,假设我想摆脱b但保留c

$ git init
$ for i in a b c; do date >$i; git add $i; git commit -m add-$i;done
$ git log
commit 39c976fa711b38d4c8161af9b6b4a9a91489d079
add-c
commit 2913863926f8c3a3898a2763fe4384b6ca7227a0
add-b
commit ff591ea43a84069e5effd28125b56243dc264336
add-a

执行reset --hard将摆脱b,但也会摆脱c

git reset --hard ff591e
HEAD is now at ff591ea add-a

如何在保持add-c提交完整的同时执行此操作?

1 个答案:

答案 0 :(得分:1)

为了保持一切顺利(是提交的sha1),你会做git revert b,其中b是b的sha1。这增加了另一个提交,否定了b

的影响

从历史记录git rebase -i b^

中删除b

再次,其中b是提交的sha1

然后删除行保存并关闭

如果有其他人在同一个仓库工作,我会建议第一种方式