Gitリポジトリにfoo
というファイルがあるとします。
rm
(git rm
ではなく)で削除されたとします。するとgitのステータスは次のようになります。
Changes not staged for commit:
deleted: foo
この個別のファイル削除をどのように段階的に進めるのですか?
私が試した場合:
git add foo
それは言います:
'foo' did not match any files.
ファイルを削除用にステージングするには、git rm foo
を使用します。 (ファイルシステムからファイルが削除されていない場合は、これもファイルシステムから削除されます。もちろん、以前にチェックインされていたので、gitから復元することもできます。)
ファイルシステムから削除せずにファイルを削除用にステージングするには、git rm --cached foo
を使用します。
あなたはgit add -u
をすることができます。
これは、それぞれに対してgit rm
を実行せずに複数のファイルを削除したい場合に役立ちます。
手動で削除されたファイルをすべてステージングするには、次のものを使用できます。
git rm $(git ls-files --deleted)
このコマンドにエイリアスをgit rm-deleted
として追加するには、次のコマンドを実行します。
git config --global alias.rm-deleted '!git rm $(git ls-files --deleted)'
すべての削除済みファイルを追加する
git status -s | grep -E '^ D' | cut -d ' ' -f3 | xargs git add --all
念のため確認してください
git status
あなたは行ってもいいはずです
Git 2.0.0以降、git add
はファイルの削除も行います。
<pathspec>…
コンテンツを追加するファイル。ファイルグロブ(例:* .c)を指定して、一致するすべてのファイルを追加できます。また、ディレクトリ全体の現在の状態に一致するようにインデックスを更新するために、先頭のディレクトリ名(たとえば、dir/file1およびdir/file2を追加するdir)を指定できます(たとえば、dirを指定すると、変更されたファイルdir/file1だけではなく記録されます)。ワーキングツリーでは、ワーキングツリーにdir/file2というファイルが追加されましたが、ワーキングツリーからdir/file3というファイルも削除されました 以前のバージョンのGitでは削除されたファイルは無視されていました。変更したファイルや新しいファイルを追加したいが、削除したファイルは無視したい場合 -
あなたが使用することができます
git rm -r --cached -- "path/to/directory"
削除されたディレクトリをステージングする。