1

いくつかのファイルがあります。たとえば、ファイルにerror_log追加される前に誤って git に追加された可能性があるため、この名前のファイルのすべてのインスタンスをGit リポジトリから.gitignore削除するにはどうすればよいでしょうか?

サーバーに残しておきたいので、--cachedオプションを使用することに注意してください。

4

3 に答える 3

1
find -name "error_log" | xargs git rm --cached

トリックを行う必要があります

于 2016-03-18T11:02:01.350 に答える
0

cd git プロジェクト ファイル

私を読んでいる間。git rm --cached $PWD/$i を実行します。完了 < .gitignore

次にコミットします

これにより、現在のコミットからそれらのファイルを削除します。

履歴から削除したい場合は、さらに多くのことを行う必要があります。したがって、それを行う必要がある場合は、以下にコメントしてください。


説明:

あなたが言った:

いくつかのファイルがあります。たとえば、1 つは error_log で、これらのいくつかは.gitignoreファイルに追加される前に誤ってgit に追加された可能性があります ...

スクリプトが行うことは、.gitignore ファイルを 1 行ずつ読み取るため、スクリプトは while ループを実行します。

$i は行です

$PWD は現在のディレクトリのパスです

したがって、 $PWD/$i は .gitignore ファイルの各行にあるファイルのパスです。

.gitignore の各行に対して git rm --cached $PWD/$i を実行します。

ファイル $PWD/$i が git に追加されていない場合 (つまり、ファイルが自分の error_logs のいずれでもない場合)、害はありません。それが error_logs の 1 つである場合は、そのファイルをキャッシュから削除します。

最初に .gitignore にファイルを追加してから、スクリプトを実行してください。

于 2016-03-18T11:26:11.523 に答える
0

filter-branchコミット履歴 (すべてのコミット) から完全に消去するために使用する必要があります。

git filter-branch --index-filter --prune-empty "find . -name error_log | xargs --no-run-if-empty git rm --cached --ignore-unmatch"

(こちらの解決策 5またはGitHub の機密データの削除)

ノート!この方法では、「error_log」の古いリビジョンがすべて失われます。最後の状態のファイルのみが利用可能になります。ファイルをレポから除外して将来追跡しないようにする場合は、 @ blue112 の回答を使用してください

于 2016-03-18T11:07:05.793 に答える