Git删除不必要的提交(日志)作为更新README.md

wbgh16ku  于 2023-09-29  发布在  Git
关注(0)|答案(2)|浏览(121)

首先,我想消除所有指定提交消息为“更新README.md”的提交

问题是,我有超过50个提交,其中大多数是“更新README.md”,只有最少的编辑。

我可以用这个过滤

git log --grep="Update README.md"

我怎么才能真正删除它们?
或者,我希望能够对README.md进行更改,而不会生成更多不必要的提交。

unguejic

unguejic1#

如果没有提交,你不能对存储在GIT中的文件进行更改;所以我建议你重新考虑这个问题,为什么你关心更新README.mk的提交是否在你的历史记录中。
如果你'删除'提交,更改将被撤消。如果你将它们压缩到其他提交中,你正在改变你所做的一切的哈希值,这将扰乱repo中的其他人。
总结:你真的需要解释为什么你认为你需要这样做;因为表面上你不应该这么做
如果你还没有合并你的分支来掌握,那就继续重写你的分支历史,把它们压缩在一起。但是你还没有说清楚你在哪个分支,你想修改哪个分支等等。

svgewumm

svgewumm2#

警告:请务必备份后再尝试

首先,你必须复制文件,其中有这么多不必要的提交,然后
使用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

然后在控制台中删除所有名为“Update README.md”的提交,除了最终文件和保存文件,现在使用git add .git commit -a
现在用你在开始时保存的副本替换他被删除的提交文件
最后用力推:

git push origin +master

相关问题