2015-08-26 112 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

相關問題