古い Git コミットで .gitconfig が見つかりません
-
20-08-2019 - |
質問
先ほど気づいたのですが、私の .gitconfig -file は私のリポジトリで公開されていました。私の秘密のトークンが含まれています。
私 git-add -u
ファイルを保存してコミットしました。このコマンドが以前のコミットからもファイルを削除するかどうかはわかりません。
以前のコミットでファイルを検索して、履歴にそのようなファイルが存在しないことを確認したいと思います。
以前のコミット内のファイルを検索するにはどうすればよいでしょうか?
走る
git filter-branch --tree-filter 'rm .gitconfig' master # Thanks to Greg!
分かりました
Rewrite 84dabfa2ea195ce9aad0309216858b302150017c (1/25)rm: .gitconfig: No such file or directory
tree filter failed: rm .gitconfig
エラー メッセージは、コミット履歴にファイルがないことを示しています。
コミット履歴でファイルを検索する方法はありますか コミット履歴にファイルがないことを確認するために削除を実行する必要はありません。
解決
短い答え:
git filter-branch --tree-filter 'rm -f .gitconfig' master
注意してください -f
.
長い答え:
rm
ファイルが存在しない場合は、ゼロ以外の戻りコードが返されます。 filter-branch
これはエラーだと考えて書き換えを中止してください。追加 -f
これを避けてください。
注記:
別のコマンドもあります。
git filter-branch --index-filter 'git rm --cached --ignore-unmatch .gitconfig' master
これははるかに高速です。このコマンドは、マニュアル ページの「例」セクションに記載されています。
他のヒント
過去のすべてのGitの履歴からファイルを削除するには、あなたはすべての過去を書き換える必要があります<のhref = "http://www.kernel.org/pub/software/scm/git-core/docsのようなものを使用してコミット/git-filter-branch.html」のrel = "nofollowをnoreferrer"> git filter-branch
の。しかし、これを実行すると、すべての過去の木を使用して新しいツリーをマージ不可能になり、とても注意してこれを行います。
グローバルデフォルト(.gitconfig)にリポジトリ内のすべてのewvisionsをリセットします。
git filter-branch -f --commit-filter 'GIT_COMMITTER_NAME="`git config --get user.name`";GIT_AUTHOR_NAME="`git config --get user.name`";GIT_COMMITTER_EMAIL="git config --get user.email";GIT_AUTHOR_EMAIL="`git config --get user.email`";git commit-tree "$@";' HEAD