2016-05-17 8 views
7

私はgitを学んでいますが、ファイルをステージングしてコミットする方法が混乱しています。この周りに私の頭を包むために、私はディレクトリのメタファーを使用しています:作業ディレクトリ、ステージングディレクトリ、コミットディレクトリ。いつrm、git rm、git rm --cached、git addを使うべきですか?

  • 私は私の作業ディレクトリからファイルをrm場合は、それだけでのみ私の作業ディレクトリから、それを削除します。それは正しい?
  • 私の作業ディレクトリにあるファイルがI git rmであれば、それはすべて の3つのディレクトリから削除されます。正しい?
  • ファイルがgit rm --cachedの場合、ファイルはステージ番号 から削除され、ディレクトリはコミットされますが、作業ディレクトリに残りますか?
  • 私が更新した場合、追加され、私の作業 ディレクトリからファイルを削除し、git add .を行い、その後、git statusショーは、追加、削除、および更新されて たファイルを上演。コミットするとどうなりますか?削除されたファイル はCommitディレクトリから削除されていますか?後でコミットする にロールバックすると、削除されたファイルが再び表示されますか?

これらの概念を理解する助けがあれば感謝します。

答えて

17

ステージング領域(インデックスまたはキャッシュとも呼ばれます)と--cachedオプションについての理解を調整してください。 documentation for git rm状態

--cached 

はインデックスからのパスをunstageして削除するには、このオプションを使用します。ワーキングツリーファイルは、変更されているかどうかにかかわらず、そのまま残されます。あなたのリストを下に実行

  • rm fileを与える - 作業ディレクトリからのみ
  • git rmをファイルを削除する - 作業ディレクトリからとステージング領域からファイルを削除しますが、まだ歴史の一部(リポジトリ、 "コミットディレクトリ")
  • git rm --cached - ステージング領域から削除しますが、作業ディレクトリも履歴も削除しないでください。
  • 修正ファイル、新しいファイル、および削除されたファイルがあると、gitはキャッシュに変更と新しいunignoredファイルを記録します。 (git addは、特定のオプションで異なる動作をします。)

様々なのgitコマンドに--cachedオプションは彼らがインデックスに作動させるか、少なくともインデックスに関して。

git addおよびgit rmは、作業ディレクトリからインデックスまたはキャッシュに変更を加えます。これらのコマンドは、一度に次のコミットを構築するものと考えてください。

インデックス内の内容に満足したら、git commitを使用してインデックスからリポジトリへの変更を移動します。時間の

ほとんど、何がしたいことは、あなたの歴史の中で、現在の時点でファイルの追跡を停止するgit commit続いシンプルなシーケンスgit rm fileです。

関連する問題