6

リモートの裸の git リポジトリがあります。

新しい開発者がそれを複製しましたが、適切に構成された .gitignore ファイルを持っていなかったため、誤って不要なファイルをリモートにプッシュしてしまいました。変更をプルしてマージすると、以前は追跡されていなかったこれらのファイルが得られました。他の人もリモートから変更をプルし、これらの不要なファイルも持っています.

これらのファイルをリモート リポジトリから、および他のすべてのリモート/オリジン/ブランチから削除するにはどうすればよいですか?

4

2 に答える 2

7

これに関するFAQがあるgithubを参照してください:https ://help.github.com/articles/remove-sensitive-data 手順は次のとおりです。

  1. ローカル(作業中)ツリーからツリーを書き直します。

    $ git filter-branch --index-filter'git rm --cached --ignore-unmatch Rakefile' \ --prune-empty --tag-name-filter cat --- all

  2. リモートにプッシュを強制します。

    $ git push origin master --force

  3. 誰もがリモートからプルします(そして--force必要に応じて使用します)

これが再発しないようにする.gitignoreには、リポジトリでをチェックする必要があります(オプションでサーバーにフックを設定します)

于 2012-09-07T03:39:51.347 に答える
2

これは 3 ステップのプロセスです。

  1. リポジトリのコピーからファイルを削除します (そもそもこれらのファイルがリポジトリに存在しないことがどれほど重要であったかに応じて、履歴からこれらのファイルを削除するgit rmか、完全に削除します)。
  2. を使用して、変更をリモート リポジトリにプッシュしますgit push --force
  3. リポジトリを再プルできることを全員に知らせてください。これには、最後の既知の適切なコミットgit rebaseでの作業が必要になります。

最後のステップとして、.gitignoreファイルをリポジトリに追加して、リポジトリがクローンされたときにすべての適切なファイルが無視されるようにすることもできます。

于 2012-09-07T03:40:06.620 に答える