首先,我想要删除所有指定提交消息的提交,以及更新README.md'
问题是我有超过50个提交,其中大多数是"更新README.md"用最少的编辑。
我可以用这个过滤,
--properties
如何实际删除它们?
或者,我希望能够对git log --grep="Update README.md"
进行更改,而不会产生更多不必要的提交。
答案 0 :(得分:1)
您无法在没有提交的情况下对存储在GIT中的文件进行更改;所以我建议你重新审视一下这个问题,为什么你关心更新README.mk
在你历史记录中的提交。
如果您要删除'提交更改将被撤消。如果你将它们压缩到其他提交中,你就会改变你所做的所有事情的哈希值,这将破坏回购中的其他所有人。
总结:你真的需要解释为什么你认为你需要这样做;因为表面上你不应该这样做。
如果您尚未通过各种方式将您的分支合并到主人,请继续并重写您的分支历史记录并将事情压缩在一起。但是,您还没有明确说明您所在的分支,要修改的分支等。
答案 1 :(得分:0)
警告:请务必在尝试前进行备份
首先,您必须复制具有许多不必要提交的文件,然后
使用git rebase -i HEAD~NUMEROFCOMMITS
来显示提交
注意:如果某些方法有问题,可以使用
git rebase (--continue | --abort | --skip)
而不是删除提交和替换文件可以使用squash
进行组合提交
使用:git rebase -i HEAD~NUMBEROFCOMMITS
然后将显示提交
更改 pick
squash
在要求您合并和保存的提交行中,然后:
执行:git push origin +master
<小时/>
对于我的案例:
git rebase -i HEAD~50
然后在控制台中删除名称为&#34;更新README.md&#34;的所有提交。除了最终和保存文件,现在使用git add .
和git commit -a
现在用你在开头保存的副本替换他被删除了提交的文件
最后强行推动:
git push origin +master