web-dev-qa-db-ja.com

削除されたファイルをローカルのgitステータスに表示されないように削除するにはどうすればよいですか?

開発者は、そのフォルダを.gitignoreファイルに追加せずに、サーバーにイメージディレクトリを追加しました。 git pullを実行すると、それらのファイル(数百のファイル)がプルされました。サーバーの.gitignoreにフォルダーを追加しましたが、ローカルシステムには追加しませんでした。次に、ファイルをローカルで(完全に)削除しました。 gitステータスを実行すると、削除されたすべてのファイルが引き続き表示されます。それらが表示されないようにするにはどうすればよいですか?

更新:すべての素晴らしい助けに感謝します。誤解がないことを確認するために:私はファイルをサーバーに保持したいと思います。それらをgitから削除したいだけです。

13
uwe

彼らはすでにリポジトリにコミットしているので、もう少し作業が必要ですが、それでも実行可能です。

この手順で私が見つけた最良のウォークスルーは、 機密データの削除 に関するGithubのガイドです。ファイルを保持したいので、ガイドの前後に行う手順があります。

このプロセスを開始する前に、作業ディレクトリからファイルをコピーしてください。それらのリポジトリのパージが完了したら、それらをコピーして戻し、.gitignoreに追加します。

4
Andy

これがタスクを実行する最も簡単な方法だと思います。

$> 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

お役に立てれば :)

23
NightFury13

おそらく、削除されたファイルを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から復元できないデータが誤って削除されるのを防ぐための安全機能です。

13
Matt Ball

コメント後に更新。

サーバー上に画像を保持したいが、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

5
Mark Fisher

git rm <deleted file path> その後 git commitは作業ディレクトリをクリーンアップします。

0
Tasneem Haider

ローカルでも.gitignoreにフォルダを追加します。

0
Duncan Babbage