2012-05-05 8 views
1

私はソース管理のためにgitを使い始めました。私は私が行くようにすべてを理解していることを確認したい、と私は非常に早く私は奇妙に思われるものを打つ。コミットする前に、追跡対象のファイルを追加する必要があるのはなぜですか?

は、ここで私がやっているものです:

  1. はGitHubの上に新しいリポジトリを作成します。これは、 "標準の" C#.gitignoreファイルを作成することを提案しています。これは素晴らしいと思います。
  2. リポジトリにReadmeと.gitignoreの両方が作成されています。
  3. このレポを私のマシンに複製するgit clone [repo location] [local folder]
  4. 無視するファイルとフォルダを追加するには、.gitignoreファイルを編集します。
  5. git commitと入力すると、「変更はコミットのためにステージングされませんでした」というメッセージが表示されますが、.gitignoreは変更されたものとしてリストされます。

最終的に私はそれを追加し、コミットし、原点に戻します。これは私の変更をGitHubで示しています。だからすべてが順調です。

これは私にとっては紛らわしいものです。 .gitignoreが追跡されていなかった場合、どのようにしてgit cloneを使用してそれが下落しましたか?変更をコミットする前に手動で追加する必要があるのはなぜですか?

答えて

8

これはどのようにgitの景色、あなたのリポジトリです:リポジトリに

repository --- staging area --- working directory 

、あなたはすべてのローカル枝やfetch編リモートブランチで、コミットされたものをすべて取得します。作業ディレクトリには、すべてのファイルがあり、コミットからチェックアウトされている可能性があります。ステージング領域は、コミットするファイルを追加する場所ですが、まだコミットされていません。これは、gitではコミットするものを選択できるからです(変更されたものをコミットするsvnとは異なります)。

this articleを読むことを強くお勧めしますが、それはgit resetに焦点を当てていますが、gitがどのように動作するかを非常によく理解しています。ここで

は、それの小さな絵です:

repository --- staging area --- working directory 
    |     |     | 
    |     |     | 
    |    Check out    | 
    |-------------------------------------->| 
    |     |     | 
    |     |   add  | 
    |     |<-------------------| 
    |     |     | 
    |  commit  |     | 
    |<-----------------|     | 

チェックアウトは非常に明白です。 2番目の2つは、ステージング領域にファイルを選択的に追加してコミットすることを意味します。たとえば:

$ touch file1 file2 file3 file4 # modify files 
$ git add file1 
$ git add file2 
$ git commit 

file3file4も修正されていてもfile1file2をコミットします。

時々、あなたが望むのは、あなたが持っているものをコミットすることです。

$ touch file1 file2 file3 file4 # modify files 
$ git commit -a 

git commit-aオプション自動的に指定したコミットするために、すべての変更されたファイルを追加します。そのためのショートカットがあります。

git add -pによって行われるファイルの部分をステージングすることもできます。これは、基本的にコミットパッチの部分を表示し、変更内容を選択することができます。後でgit commitを使用すると、ステージングされたものをコミットできます。

+0

これは素晴らしい説明です。この記事は多くの助けになりました(これは私が 'git reset'について持っていた質問と一緒に) –

+0

私は知っていますよね? 'git reset'は非常に混乱するかもしれませんが、その記事はとてもシンプルです。 – Shahbaz

+0

特に、ステージングエリアがないsvnのバックグラウンドから来ています。しかし、非常に涼しい。 –

関連する問題