首先,我想消除所有指定提交消息为“更新README.md”的提交
问题是,我有超过50个提交,其中大多数是“更新README.md”,只有最少的编辑。
我可以用这个过滤
git log --grep="Update README.md"
我怎么才能真正删除它们?或者,我希望能够对README.md进行更改,而不会生成更多不必要的提交。
README.md
unguejic1#
如果没有提交,你不能对存储在GIT中的文件进行更改;所以我建议你重新考虑这个问题,为什么你关心更新README.mk的提交是否在你的历史记录中。如果你'删除'提交,更改将被撤消。如果你将它们压缩到其他提交中,你正在改变你所做的一切的哈希值,这将扰乱repo中的其他人。总结:你真的需要解释为什么你认为你需要这样做;因为表面上你不应该这么做如果你还没有合并你的分支来掌握,那就继续重写你的分支历史,把它们压缩在一起。但是你还没有说清楚你在哪个分支,你想修改哪个分支等等。
README.mk
svgewumm2#
警告:请务必备份后再尝试
首先,你必须复制文件,其中有这么多不必要的提交,然后使用git rebase -i HEAD~NUMEROFCOMMITS显示提交
rebase -i HEAD~NUMEROFCOMMITS
注意:如果某些方法有问题,可以使用
git rebase (--continue | --abort | --skip)
而不是删除提交和替换文件可以使用squash合并提交用途:git rebase -i HEAD~NUMBEROFCOMMITS,然后显示提交
squash
git rebase -i HEAD~NUMBEROFCOMMITS
在需要合并并保存的提交行中,将pick修改为squash,然后:执行:git push origin +master
pick
git push origin +master
对于我的情况:
git rebase -i HEAD~50
然后在控制台中删除所有名为“Update README.md”的提交,除了最终文件和保存文件,现在使用git add .和git commit -a现在用你在开始时保存的副本替换他被删除的提交文件最后用力推:
git add .
git commit -a
2条答案
按热度按时间unguejic1#
如果没有提交,你不能对存储在GIT中的文件进行更改;所以我建议你重新考虑这个问题,为什么你关心更新
README.mk
的提交是否在你的历史记录中。如果你'删除'提交,更改将被撤消。如果你将它们压缩到其他提交中,你正在改变你所做的一切的哈希值,这将扰乱repo中的其他人。
总结:你真的需要解释为什么你认为你需要这样做;因为表面上你不应该这么做
如果你还没有合并你的分支来掌握,那就继续重写你的分支历史,把它们压缩在一起。但是你还没有说清楚你在哪个分支,你想修改哪个分支等等。
svgewumm2#
警告:请务必备份后再尝试
首先,你必须复制文件,其中有这么多不必要的提交,然后
使用git
rebase -i HEAD~NUMEROFCOMMITS
显示提交注意:如果某些方法有问题,可以使用
方法一(推荐):
而不是删除提交和替换文件可以使用
squash
合并提交用途:
git rebase -i HEAD~NUMBEROFCOMMITS
,然后显示提交在需要合并并保存的提交行中,将
pick
修改为squash
,然后:执行:
git push origin +master
方法二:
对于我的情况:
然后在控制台中删除所有名为“Update README.md”的提交,除了最终文件和保存文件,现在使用
git add .
和git commit -a
现在用你在开始时保存的副本替换他被删除的提交文件
最后用力推: