開発者は、そのフォルダを.gitignoreファイルに追加せずに、サーバーにイメージディレクトリを追加しました。 git pullを実行すると、それらのファイル(数百のファイル)がプルされました。サーバーの.gitignoreにフォルダーを追加しましたが、ローカルシステムには追加しませんでした。次に、ファイルをローカルで(完全に)削除しました。 gitステータスを実行すると、削除されたすべてのファイルが引き続き表示されます。それらが表示されないようにするにはどうすればよいですか?
更新:すべての素晴らしい助けに感謝します。誤解がないことを確認するために:私はファイルをサーバーに保持したいと思います。それらをgitから削除したいだけです。
彼らはすでにリポジトリにコミットしているので、もう少し作業が必要ですが、それでも実行可能です。
この手順で私が見つけた最良のウォークスルーは、 機密データの削除 に関するGithubのガイドです。ファイルを保持したいので、ガイドの前後に行う手順があります。
このプロセスを開始する前に、作業ディレクトリからファイルをコピーしてください。それらのリポジトリのパージが完了したら、それらをコピーして戻し、.gitignoreに追加します。
これがタスクを実行する最も簡単な方法だと思います。
$> git add -u <directory-path> (or you may use --update)
元の状態:
$> git status .
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: .ipynb_checkpoints/Untitled-checkpoint.ipynb
deleted: CVPR 1 hr tute-Backup.ipynb
deleted: cifar10-test.t7
deleted: cifar10-train.t7
deleted: cifar10torchsmall.Zip
deleted: create_advr.lua
deleted: criterion_cifar10_lr_0.001_Epoch_13.t7
deleted: train_cifar10.lua
deleted: trained_net_cifar10_lr_0.001_Epoch_13.t7
したがって、現在のディレクトリから削除されたすべてのファイルを削除するには、を使用します。
$> git add -u .
$> git commit -m "removing deleted files from tracking"
$> git Push Origin master
最終状態:
$> git status .
On branch master
nothing to commit, working directory clean
お役に立てれば :)
おそらく、削除されたファイルをgit rm
する必要があります。から Pro Git :
ファイルの削除
Gitからファイルを削除するには、追跡ファイルからファイルを削除し(より正確には、ステージング領域から削除します)、コミットする必要があります。
git rm
コマンドはそれを実行し、作業ディレクトリからファイルを削除するため、次回は追跡されていないファイルとして表示されません。作業ディレクトリからファイルを削除するだけの場合、ファイルは
git status
の「変更されたが更新されていない」(つまり、unstaged)領域の下に表示されます。出力:$ rm grit.gemspec $ git status # On branch master # # Changed but not updated: # (use "git add/rm <file>..." to update what will be committed) # # deleted: grit.gemspec #
次に、
git rm
を実行すると、ファイルの削除が段階的に行われます。$ git rm grit.gemspec rm 'grit.gemspec' $ git status # On branch master # # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # deleted: grit.gemspec #
次にコミットすると、ファイルは失われ、追跡されなくなります。ファイルを変更してすでにインデックスに追加している場合は、
-f
オプションを使用して強制的に削除する必要があります。これは、スナップショットにまだ記録されておらず、Gitから復元できないデータが誤って削除されるのを防ぐための安全機能です。
コメント後に更新。
サーバー上に画像を保持したいが、gitからファイルを削除したい場合は、--cached
フラグをgit rm
に追加する必要があります。
cd images
git rm --cached *
cd ..
echo "images" > .gitignore
git add .
git commit -m "removed image files from git only"
git Push
プルしたときにイメージディレクトリを作成してもらいたい(ただしファイルがない)場合は、images/.gitignore
を1行の!.gitignore
で追加します。
これは履歴からそれらを削除しないことに注意してください。そのために、私は this SO answer
git rm <deleted file path>
その後 git commit
は作業ディレクトリをクリーンアップします。
ローカルでも.gitignoreにフォルダを追加します。