1

ソース管理のためにgitを初めて使用します。私は自分が進むにつれてすべてを理解していることを確認したいのですが、非常に早い段階で奇妙に思える何かに遭遇しました。

これが私がやっていることです:

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

そのため、最終的にはそれを追加し、コミットしてオリジンにプッシュバックします。これにより、GitHub での変更が表示されます。だから、すべてが順調です。

これはちょっと混乱します。.gitignore が追跡されていない場合、一体どのようにして .gitignore を使用してプルダウンされたのgit cloneでしょうか? 変更をコミットする前に手動で追加する必要があったのはなぜですか?

4

2 に答える 2

8

これは、git がリポジトリを表示する方法です。

repository  ---  staging area  ---  working directory

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

この記事を読むことを強くお勧めします。これは に焦点を当てていgit resetますが、git がどのように機能するかについて非常に優れた概要を示しています。

これがその小さな写真です:

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

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

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

のみがコミットされfile1file2さらに変更されます。file3file4

時々、あなたが望むのはあなたが持っているものを何でもコミットすることだけです。そのためのショートカットがあります:

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

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

ファイルの一部をステージングすることもできます。これによりgit add -p、基本的にコミット パッチの断片が表示され、ステージングする変更とステージングしない変更を選択できます。後で、git commitステージングされたものは何でもコミットできます。

于 2012-05-05T01:18:24.267 に答える
6

これは に固有のものではありません.gitignore。すべての変更を自動的にコミットする whichgit addを使用していない限り、変更したファイルをコミットする前に、常に を使用してステージングする必要があります。git commit -a

追跡とステージングの詳細については、Git ブックを参照してください。

于 2012-05-05T01:10:50.327 に答える