在Git中删除提交

时间:2015-12-06 04:11:19

标签: git github

我意外地做了一个提交,其中包含一些不应该提交的敏感信息。 这是提交历史记录的样子: Git commits

我删除了一些识别信息,但基本上我想删除提交C.理想情况下,我想在执行此操作时继续提交A和B,但如果不可行,则返回提交D是可以接受的。

注意:如果它有所不同,这是在主分支中。

我已经尝试了

git rebase D
git push

我也尝试过这里的说明: http://www.clock.co.uk/blog/deleting-a-git-commit

但他们都没有提供所需的结果。我确定我做错了什么。

1 个答案:

答案 0 :(得分:-1)

几个选项:

还原

您可以简单地还原C提交中的代码:

revert <C commit id>

它将还原此提交中添加的代码。

樱桃挑选

根据您的origin master结帐新分支,然后选择要保留的提交,同时跳过您要删除的提交。

git checkout origin/master
git checkout -b <new_branch>
git cherry-pick <commit1> <commit2> ... <commitn>

滤波器分支

  

有一天,您或协作者可能会意外地将敏感数据(如密码或SSH密钥)提交到Git存储库中。虽然您可以使用git rm从最新提交中删除该文件,但该文件仍将存在于存储库的历史记录中。幸运的是,还有其他工具可以从存储库的历史记录中完全删除不需要的文件。本文将解释如何使用其中两个:git filter-branch和BFG Repo-Cleaner。

https://help.github.com/articles/remove-sensitive-data

Remove sensitive files and their commits from Git history