Git删除uncessary commit(log)作为Updates README.md

时间:2016-04-07 20:34:09

标签: git github

首先,我想要删除所有指定提交消息的提交,以及更新README.md'

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

我可以用这个过滤,

--properties

如何实际删除它们?

或者,我希望能够对git log --grep="Update README.md" 进行更改,而不会产生更多不必要的提交。

2 个答案:

答案 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