为了账号安全,请及时绑定邮箱和手机立即绑定

在Git中提交根提交之前插入一个提交?

在Git中提交根提交之前插入一个提交?

Git
海绵宝宝撒 2019-07-23 16:00:38
在Git中提交根提交之前插入一个提交?我之前已经问过如何在git存储库中压缩前两个提交。虽然这些解决方案非常有趣,而且并不像git中的其他一些东西那样令人惊讶,但如果你需要在项目开发过程中多次重复这个过程,它们仍然是一个众所周知的伤害。所以,我宁愿只经历一次痛苦,然后能够永远使用标准的交互式rebase。那么,我想做的是拥有一个空的初始提交,仅仅是为了成为第一个提交。没有代码,没有任何东西。只是占用空间,因此它可以作为rebase的基础。我的问题是,拥有一个现有的存储库,如何在第一个存储库之前插入一个新的空提交,并将其他所有人转移?
查看完整描述

3 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

发现对于一个大型存储库(> 5000次提交),filter-branch比rebase更好,原因有以下几种:1)它更快2)当出现合并冲突时,它不需要人工干预。3)它可以重写标签 - 保留它们。请注意,filter-branch有效,因为对每个提交的内容没有任何疑问 - 它与此'rebase'之前完全相同。


我的步骤是:


# first you need a new empty branch; let's call it `newroot`

git symbolic-ref HEAD refs/heads/newroot

git rm --cached -r .

git clean -f -d


# then you apply the same steps

git commit --allow-empty -m 'root commit'


# then use filter-branch to rebase everything on newroot

git filter-branch --parent-filter 'sed "s/^\$/-p <sha of newroot>/"' --tag-name-filter cat master

请注意,'--tag-name-filter cat'选项意味着将重写标记以指向新创建的提交。


查看完整回答
反对 回复 2019-07-23
  • 3 回答
  • 0 关注
  • 1276 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信