2015-08-26 101 views
1

我在提交时包含了一个文件,其中包含我的密码,我推送它,后来意识到我犯的错误。git-filter-branch vs. rebase + reset --hard + push --force

我明白git-filter-branch(或BFG Repo-Cleaner)帮助清理历史,然而,如何从做不同的...

  1. rebase -i - 移动致力于尖端,然后
  2. reset --hard [previous_commit] - 应用此到回购,然后
  3. push --force

在可视化上述S的结果在SourceTree中,我没有看到以前的提交(及其内容),但我可以想象它可能会出现在其他人已经将错误提交的回购,或者甚至是新克隆的历史中。

那么与git-filter-branch相比,基本上有什么不同呢?我是否将苹果与橘子进行比较?

编辑:看起来像你可以做的步骤1 & 2上面一次使用rebase -i --autosquash [commit_hash]

+0

最后我检查了一下,没有'git reverse --hard'这样的东西...你是不是指'git reset --hard'? – twalberg

+0

“,但我可以想象它可能会出现在其他已经用错误提交回购了回购的人的历史中 - ”是的。 “甚至是新的克隆” - 不会。除非有一些其他参考历史包括该提交。 – jthill

+0

@twalberg更正,谢谢! – webeno

回答

0

是的,你可以使用这两种方法来解决你的问题。我会推荐git rebase,因为你可以更好地控制最终提交的样子。

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

+0

那些已经拉过的人的历史呢? – webeno

+0

他们必须重新绑定他们的本地分支,并手动删除旧的提交。有关于如何做到这一点的说明。这是重写历史时的问题。 – FelipeC

相关问题