2011-09-27 12 views
19

作業ディレクトリのファイルを変更すると、gitはステージングに "git add"を使用するよう指示します。git trackingとgit stagingのコンセプト

作業ディレクトリに新しいファイルを追加すると、git addを使って追跡を開始するよう指示されます。

私は変更のためのファイルを追跡することは、あなたが追跡を開始するためにファイルを追加すると、それはまた、その内容がステージングコミット

答えて

12

Gitは「インデックス」として知られている概念を持っているを使用することができます。新しいコミットを作成するには、次回のコミットに含める内容で索引を埋めます。これは、git addを使って、次のコミットに表示したい変更を明示的にGitに伝えなければならないことを意味します。

ファイルを更新する(»ステージの変更«)だけでなく、新しいファイルの完全な内容を追加する(»ファイルを追跡し始めるかどうかは、Gitには違いがありません。 «〜)両方の時間に、Gitのインデックスが見るのは新しい変更の追加です

+0

素晴らしい説明と段階的なファイルをunstageすることができます。 – cheznead

8

のためにそれをステージングと異なっていると仮定ので、私はこれらの2つの概念について少し混乱しています。

あなたはそれをステージングせずに追跡するためのファイルを追加したい場合は、あなたが

git add -N 
1

あなたが特定したgit addのステップの両方が基本的に同じことをしますが、それらは到着ルートが異なるため説明が異なります。

git addは、提供されたファイルがソースコントロールリポジトリ内の正確な現在の形式(内容)であることを望むファイルであることをgitに伝えるだけです。その時点で、gitはファイルのスナップショットを取って(そして索引にメモを残します)、ファイルへのすべての変更が準備され、追加された(つまり、ステージング領域で一緒にマーシャルされた)とき、 git commit(適切なメッセージ;-)を付けてください。

@vhの-Nオプションなど、そのファイルについてgitが通知されると、さまざまなコマンド(たとえば、git statusなど)のように見えます。したがって、後でコミットするバージョンをaddに変更した後で、ファイルを追跡したくないときにgitに明示的に伝える必要があります(git rm <file>)。ほとんどの場合、最終バージョンをコミットする前に、何度もファイルをgit addに何度も書き込むことができます。

21

Gitは基本的に、あなたの地元のレポ内のファイルのための4つの主要なステータスを持っています

  • 人跡未踏:ファイルが新規で、Gitはそれについて何も知りません。あなたgit add <file>場合、それは次のようになります。
  • を上演:今、Gitはファイル(追跡)を知っているが、また、それ(インデックスと呼ばれる)次のコミットバッチの一部ました。 git commitの場合は、
  • 変更なし:ファイルは最後のコミット後に変更されていません。 に変更すると、次のようになります。
  • unstaged:変更されましたが、次のコミットの一部ではありません。あなたはgit add

あなたが見ることができるように、git addトラック人跡未踏のファイル、および段階任意のファイルがすると再びそれをステージングできます。

はまた:あなたはgit rm --cached filenameにコミットされていないファイルをuntrackとgit reset HEAD <file>