git-filter-branch vs. rebase + reset --hard + push --force

时间:2015-08-26 11:58:03

标签: git version-control git-rewrite-history

我在提交中包含了一个文件,上面有我的密码,我推了它,后来意识到我犯了错误。

我理解git-filter-branch(或BFG Repo-Cleaner)有助于清理历史记录,但是,这与做...有什么不同...

  1. rebase -i - 将提交移至提示,然后
  2. reset --hard [previous_commit] - 将此应用于回购,然后
  3. push --force
  4. SourceTree中可视化上述步骤的结果后,我没有看到先前的提交(及其内容),但我可以想象,对于已经使用错误的提交,甚至新的克隆。

    那么与git-filter-branch相比,差异基本上是什么?我比较苹果和橘子吗?

    编辑:看起来你可以做第1步和第2步2使用rebase -i --autosquash [commit_hash]一次性进行上述。

1 个答案:

答案 0 :(得分:0)

是的,您可以使用这两种方法来解决问题。我建议使用git rebase,因为您可以更好地控制最终提交的确切内容。

git filter-branch更适合对许多提交进行更改,而不仅仅是一次。