0

git リポジトリにあってはならないファイルをコミットしてしまいました。私はそれを削除し、削除をコミットしましたが、まだ git 履歴からファイルにアクセスできます。

コミットされたファイルを完全に削除して、痕跡が残らないようにするにはどうすればよいですか?

4

2 に答える 2

7

を使用して、ファイルを完全に削除できますfilter-branch。リポジトリのすべてのリビジョンで引数のコマンドを適用します。

git filter-branch --tree-filter 'rm -rf your_file' HEAD

この詳細な投稿が役立つ場合があります。git docも非常に役立ちます。

git gcコメントで述べたように、ローカル コミットを消去してからgit pushリモート リポジトリを更新する必要もあります。

于 2013-05-15T07:10:55.390 に答える
2

これは役立つかもしれません:

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

次のコマンドはこれを行います。

git clone https://github.com/defunkt/github-gem.git
# Initialized empty Git repository in /Users/tekkub/tmp/github-gem/.git/
# remote: Counting objects: 1301, done.
# remote: Compressing objects: 100% (769/769), done.
# remote: Total 1301 (delta 724), reused 910 (delta 522)
# Receiving objects: 100% (1301/1301), 164.39 KiB, done.
# Resolving deltas: 100% (724/724), done.

cd github-gem

git filter-branch --force --index-filter \
  'git rm --cached --ignore-unmatch Rakefile' \
  --prune-empty --tag-name-filter cat -- --all
# Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (266/266)
# Ref 'refs/heads/master' was rewritten

このコマンドは、すべてのブランチとタグの履歴全体を実行し、ファイル Rakefile に関係するすべてのコミットとその後のすべてのコミットを変更します。その後空のコミット (Rakefile のみを変更したため) は完全に削除されます。ファイル名だけでなく、削除するファイルのフル パスを指定する必要があることに注意してください。

于 2013-05-15T07:10:38.723 に答える