TL; DR:有一个6岁的提交,我只是想让它消失,我相信它是空的,我想把它删除。
即。最底层的提交:
[a few thousand commits on top of this]
* 08d01075 - (5 years ago)
|\
| * 2da4e798 - (5 years ago)
| |\
| |/
|/|
* | f29c0523 - (5 years ago)
* | a9a851d7 - (5 years ago)
* | d8e70b9b - (5 years ago)
| * 84a54eff - (5 years ago) new branch
| |\
| |/
|/|
* | 022bca02 - (6 years ago)
* | 79a5d079 - (6 years ago)
* | 5a89f05a - (6 years ago)
* | f02cc7f0 - (6 years ago)
* | 645ffc64 - (6 years ago)
* | 9693b596 - (6 years ago)
/
* 55555555 - (5 years ago) the null commit
55555555是我想删除的
我不知道这个提交有多真实,因为:
$ git diff 55555555^ 55555555
fatal: ambiguous argument '55555555 ^': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
或者
$ git show --no-patch 2bb15d71
commit 5555555
Author: .........
Date: Tue Mar 12 11:01:54 2012
the null commit
答案 0 :(得分:0)
您可能实际上并不想这样做,如评论中所述。
但如果您确定这样做,可以运行交互式rebase:
git rebase -i --root
-i
是交互式rebase的转换。
--root
是第一次提交。
删除要删除的提交行,然后保存。
这种技术的问题在于提交将保留在其他贡献者计算机上,并且在他们进行更改时将被推送到远程仓库,除非他们遵循相同的步骤。如果你一个人工作,这应该有效。