16

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

更新: すべての大きな助けに感謝します。誤解のないように言っておくと、ファイルをサーバーに保存したいのです。それらをgitから削除したいだけです。

4

6 に答える 6

27

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

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

お役に立てれば :)

于 2016-04-01T10:26:51.760 に答える
15

おそらくgit rm、削除されたファイルが必要です。プロGitから:

ファイルの削除

ファイルを Git から削除するには、追跡対象のファイルから削除 (より正確には、ステージング領域から削除) してからコミットする必要があります。コマンドはそれgit rmを行い、作業ディレクトリからファイルを削除するので、次回は追跡されていないファイルとして表示されません.

ファイルを作業ディレクトリから単純に削除すると、出力の「変更されたが更新されていない」(つまり、ステージングされていない) 領域の下に表示されます git status

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

于 2011-11-10T20:28:36.587 に答える
6

コメント後に更新。

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

これは履歴からそれらを削除しないことに注意してください。そのために、私はこのSOの答えを見るでしょう

于 2011-11-10T20:43:51.373 に答える
4

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

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

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

于 2011-11-10T20:29:37.710 に答える
0

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

于 2011-11-10T21:03:10.850 に答える
0

git rm <deleted file path>次にgit commit、作業ディレクトリを消去します。

于 2016-01-07T19:11:58.927 に答える