Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
- 2.48.1 no changes
- 2.48.0 01/10/25
- 2.46.1 → 2.47.2 no changes
- 2.46.0 no changes
- 2.45.1 → 2.45.3 no changes
- 2.45.0 04/29/24
- 2.43.2 → 2.44.3 no changes
- 2.43.1 02/09/24
- 2.40.1 → 2.43.0 no changes
- 2.40.0 03/12/23
- 2.38.1 → 2.39.5 no changes
- 2.38.0 10/02/22
- 2.37.4 → 2.37.7 no changes
- 2.37.3 08/30/22
- 2.34.1 → 2.37.2 no changes
- 2.34.0 11/15/21
- 2.25.1 → 2.33.8 no changes
- 2.25.0 01/13/20
- 2.22.1 → 2.24.4 no changes
- 2.22.0 no changes
- 2.21.1 → 2.21.4 no changes
- 2.21.0 02/24/19
- 2.18.1 → 2.20.5 no changes
- 2.18.0 06/21/18
- 2.17.0 → 2.17.6 no changes
- 2.16.6 12/06/19
- 2.15.4 no changes
- 2.14.6 12/06/19
- 2.11.4 → 2.13.7 no changes
- 2.10.5 09/22/17
- 2.8.6 → 2.9.5 no changes
- 2.7.6 07/30/17
- 2.5.6 → 2.6.7 no changes
- 2.4.12 05/05/17
- 2.3.10 09/28/15
- 2.1.4 → 2.2.3 no changes
- 2.0.5 12/17/14
概要
git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p] [--edit | -e] [--[no-]all | -A | --[no-]ignore-removal | [--update | -u]] [--sparse] [--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize] [--chmod=(+|-)x] [--pathspec-from-file=<file> [--pathspec-file-nul]] [--] [<pathspec>…]
説明
このコマンドは、作業ツリーで見つかった現在のコンテンツを使用してインデックスを更新し、次のコミットのためにステージングされたコンテンツを準備します。通常、既存パスの現在のコンテンツ全体を追加しますが、一部のオプションでは、作業ツリーファイルに加えられた変更の一部のみを適用してコンテンツを追加したり、既に作業ツリーに存在しないパスを削除したりすることもできます。
このインデックスで作業ツリーのコンテンツのスナップショットを保持し、次のコミット際に取得されるコンテンツはこのスナップショットです。したがって、少しでも作業ツリーに変更を加えた後はcommitコマンドを実行する前に、 add
コマンドを使用し、新しいファイルまたは変更されたファイルをインデックスに追加する必要があります。
このコマンドはコミットする前に複数回実行することができます。指定されたファイルのコンテンツのみがaddコマンドで追加されます。次のコミットに後続の変更を含める場合は、 git add
を再度、実行して、新しいコンテンツをインデックスに追加する必要があります。
git status
コマンドを使用し、次のコミットのためにステージングされる、変更されているファイルの概要の取得を行うことができます。
The git add
command will not add ignored files by default. If any ignored files were explicitly specified on the command line, git add
will fail with a list of ignored files. Ignored files reached by directory recursion or filename globbing performed by Git (quote your globs before the shell) will be silently ignored. The git add
command can be used to add ignored files with the -f
(force) option.
コミットにコンテンツを追加する別の方法については、git-commit[1] を参照してください。
オプション
-
<pathspec>...
-
コンテンツを追加するファイルです。ファイルグローブ (例:
*.c
) を指定すると、マッチするすべてのファイルを追加することができます。また、先頭にディレクトリ名 (例:dir
でdir/file1
とdir/file2
を追加します) を指定すると、ディレクトリ全体の現在の状態に合わせてインデックスを更新することができます (例:dir
を指定すると、作業ツリーで変更されたファイルdir/file1
や作業ツリーに追加されたファイルdir/file2
だけでなく、作業ツリーから削除されたファイルdir/file3
も記録されます)。古いバージョンの Git では、削除されたファイルは無視されていたことに注意しましょう。修正されたファイルや新しいファイルを追加したいが、削除されたファイルは無視したいという場合には、--no-all
オプションを使用してください。For more details about the <pathspec> syntax, see the pathspec entry in gitglossary[7].
-
-n
-
--dry-run
-
実際にファイルを追加するのではなく、単にファイルが存在するかどうか、あるいは無視されるかどうかを表示します。
-
-v
-
--verbose
-
詳細が表示されます。
-
-f
-
--force
-
それ以外の場合は無視されたファイルの追加を可能にします。
-
--sparse
-
sparse-checkout コーンの外にあるインデックスエントリの更新を可能にしました。通常、
git add
は、パスが sparse-checkout コーンに収まらないインデックスエントリの更新を拒否します。なぜなら、それらのファイルは警告なしに作業ツリーから削除される可能性があるからです。詳細は git-sparse-checkout[1] を参照してください。 -
-i
-
--interactive
-
作業ツリーで変更されたコンテンツをインデックスに対話形式で追加します。オプションのパス引数を与えることで,作業ツリーのサブセットに操作を限定することができます。詳細は 「インタラクティブモード」を参照してください。
-
-p
-
--patch
-
インデックスとワークツリーの間にあるパッチの塊をインタラクティブに選択し、インデックスに追加します。これにより、ユーザーは修正されたコンテンツをインデックスに追加する前に、差分を確認することができます。
これは効果的に
add --interactive
を実行しますが、最初のコマンドメニューをバイパスして、patch
サブコマンドに直接ジャンプします。詳しくは「インターアクティブモード」をご覧ください。 -
-e
-
--edit
-
エディターで差分とインデックスを開き、ユーザーが編集できるようにします。エディターを閉じた後、ハンクヘッダーを調整し、パッチをインデックスに適用します。
このオプションの目的は、適用するパッチの行を選んだり、ステージングする行の内容を変更したりすることです。この方法は、インタラクティブなハンクセレクターを使用するよりも早く、柔軟性があります。しかしながら、混乱が起こりやすく、インデックスに適用できないパッチが作成されることもあります。下記の「パッチの編集」を参照してください。
-
-u
-
--update
-
Update the index just where it already has an entry matching <pathspec>. This removes as well as modifies index entries to match the working tree, but adds no new files.
If no <pathspec> is given when
-u
option is used, all tracked files in the entire working tree are updated (old versions of Git used to limit the update to the current directory and its subdirectories). -
-A
-
--all
-
--no-ignore-removal
-
Update the index not only where the working tree has a file matching <pathspec> but also where the index already has an entry. This adds, modifies, and removes index entries to match the working tree.
If no <pathspec> is given when
-A
option is used, all files in the entire working tree are updated (old versions of Git used to limit the update to the current directory and its subdirectories). -
--no-all
-
--ignore-removal
-
Update the index by adding new files that are unknown to the index and files modified in the working tree, but ignore files that have been removed from the working tree. This option is a no-op when no <pathspec> is used.
This option is primarily to help users who are used to older versions of Git, whose
git add <pathspec>...
was a synonym forgit add --no-all <pathspec>...
, i.e. ignored removed files. -
-N
-
--intent-to-add
-
パスが後で追加されるという事実だけを記録します。パスのエントリは、コンテンツのないインデックスに配置されます。これは特にそのようなファイルの未ステージングコンテンツを
git diff
で表示し、git commit -a
でコミットしたりする際に便利です。 -
--refresh
-
ファイルを追加せずに、インデックスのstat()情報を更新するだけです。
-
--ignore-errors
-
インデックス作成時にエラーが発生して追加できなかったファイルがあっても、操作を中断せずに他のファイルの追加を続けます。このコマンドは、ゼロ以外のステータスで終了します。構成変数
add.ignoreErrors
を true に設定すると、この動作がデフォルトになります。 -
--ignore-missing
-
This option can only be used together with
--dry-run
. By using this option the user can check if any of the given files would be ignored, no matter if they are already present in the work tree or not. -
--no-warn-embedded-repo
-
デフォルトでは、
git add
は、.gitmodules
にエントリを作成するのでgit submodule add
を使用せずに埋め込みリポジトリをインデックスに追加すると、警告を出します。このオプションを指定すると、この警告が表示されなくなります (例: サブモジュールに対する操作を手動で行っている場合)。 -
--renormalize
-
Apply the "clean" process freshly to all tracked files to forcibly add them again to the index. This is useful after changing
core.autocrlf
configuration or thetext
attribute in order to correct files added with wrong CRLF/LF line endings. This option implies-u
. Lone CR characters are untouched, thus while a CRLF cleans to LF, a CRCRLF sequence is only partially cleaned to CRLF. -
--chmod=(+|-)x
-
追加されたファイルの実行可能ビットを上書きします。実行可能ビットはインデックスでのみ変更され、ディスク上のファイルは変更されません。
-
--pathspec-from-file=<file>
-
Pathspec is passed in <file> instead of commandline args. If <file> is exactly
-
then standard input is used. Pathspec elements are separated by LF or CR/LF. Pathspec elements can be quoted as explained for the configuration variablecore.quotePath
(see git-config[1]). See also--pathspec-file-nul
and global--literal-pathspecs
. -
--pathspec-file-nul
-
Only meaningful with
--pathspec-from-file
. Pathspec elements are separated with NUL character and all other characters are taken literally (including newlines and quotes). -
--
-
このオプションは、コマンドラインオプションとファイルのリストを分離するために使用できます(ファイル名がコマンドラインオプションと間違えられる可能性がある場合に便利です)。
例
-
Adds content from all
*.txt
files underDocumentation
directory and its subdirectories:$ git add Documentation/\*.txt
Note that the asterisk
*
is quoted from the shell in this example; this lets the command include the files from subdirectories ofDocumentation/
directory. -
Considers adding content from all
git-*.sh
scripts:$ git add git-*.sh
この例では、シェルにアスタリスクを展開させているので(つまり、ファイルを明示的にリストアップしている)、
subdir/git-foo.sh
は考慮されません。
インタラクティブモード
インタラクティブモードに入ると、「status」サブコマンドの出力が表示され、その後、対話型コマンドループに入ります。
コマンドループでは、使用可能なサブコマンドのリストが表示され、「What now>」というプロンプトが表示されます。一般的に、プロンプトが単一の「>」で終わっている場合、与えられた選択肢の中から1つだけ選んで、次のようにreturnと入力します。
*** Commands *** 1: status 2: update 3: revert 4: add untracked 5: patch 6: diff 7: quit 8: help What now> 1
選択肢が一意であれば、上記の s
や sta
、status
と言うこともできます。
メインのコマンドループには6つのサブコマンド(+helpとquit)があります。
- status
-
This shows the change between
HEAD
and index (i.e. what will be committed if you saygit commit
), and between index and working tree files (i.e. what you could stage further beforegit commit
usinggit add
) for each path. A sample output looks like this:staged unstaged path 1: binary nothing foo.png 2: +403/-35 +1/-1 add-interactive.c
It shows that
foo.png
has differences fromHEAD
(but that is binary so line count cannot be shown) and there is no difference between indexed copy and the working tree version (if the working tree version were also different, binary would have been shown in place of nothing). The other file,add-interactive.c
, has 403 lines added and 35 lines deleted if you commit what is in the index, but working tree file has further modifications (one addition and one deletion). - update
-
これにより、ステータス情報が表示され、「Update>>」というプロンプトが表示されます。プロンプトが二重の「>>」で終わっている場合は、複数の選択が可能で、空白やカンマで連結することができます。また、範囲を指定することもできます。例:「2-5 7,9」で2,3,4,5,7,9をリストから選択します。範囲内の2番目の数字が省略された場合、残りのすべてのパッチが選択されます。例:"7-"で7,8,9をリストから選びます。すべてを選択するには「*」を指定します。
選んだものは、以下のように「*」で強調されます。
staged unstaged path 1: binary nothing foo.png * 2: +403/-35 +1/-1 add-interactive.c
選択を解除するには、次のように入力の前に
-
を付けます。Update>> -2
選択を行った後、空の行で応答して、インデックス内の選択されたパスの作業ツリーファイルの内容をステージングします。
- revert
-
これは「update」と非常によく似たUIで、選択されたパスのステージングされた情報が、HEADバージョンのものに戻されます。新しいパスを元に戻すと、そのパスはトラックされなくなります。
- add untracked
-
これは「update」や「revert」とよく似たUIで、追跡されていないパスをインデックスに追加することができます。
- patch
-
これにより、「ステータス」のような選択の中から一つのパスを選ぶことができます。パスを選択した後、インデックスと作業ツリーファイルの差分を表示し、各ハンクの変更をステージングするかどうかを尋ねます。以下のオプションを選択し、return と入力してください。
y - stage this hunk n - do not stage this hunk q - quit; do not stage this hunk or any of the remaining ones a - stage this hunk and all later hunks in the file d - do not stage this hunk or any of the later hunks in the file g - select a hunk to go to / - search for a hunk matching the given regex j - leave this hunk undecided, see next undecided hunk J - leave this hunk undecided, see next hunk k - leave this hunk undecided, see previous undecided hunk K - leave this hunk undecided, see previous hunk s - split the current hunk into smaller hunks e - manually edit the current hunk p - print the current hunk ? - print help
すべてのハンクの運命を決定した後、選択されたハンクがあれば、選択されたハンクでインデックスが更新されます。
構成変数
interactive.singleKey
をtrue
に設定すれば、ここで return を入力する必要はありません。 - diff
-
This lets you review what will be committed (i.e. between
HEAD
and index).
パッチの編集
git add -e
を実行するか、インタラクティブな hunk セレクタから e
を選択すると、エディタでパッチが開かれ、エディタが終了すると、結果がインデックスに適用されます。パッチには自由に変更を加えることができますが、変更によっては混乱を招く結果になったり、適用できないパッチになってしまうこともあるので注意が必要です。もし、この操作を完全に中止したい(つまり、インデックスに何も新しいものを入れないようにしたい)場合には、単純にパッチのすべての行を削除してください。以下のリストは、パッチの中でよく見られるものと、それに対してどのような編集操作が意味を持つかを説明しています。
- 追加コンテンツ
-
追加されたコンテンツは、"+" で始まる行で表されます。追加された行を削除することで、ステージングを防ぐことができます。
- 削除されたコンテンツ
-
削除されたコンテンツは、"-" で始まる行で表されます。この "-" を " "(スペース)に変換することで、削除されたことを演出することができます。
- 変更されたコンテンツ
-
修正されたコンテンツは、"-"行(古いコンテンツの削除)と"+"行(置き換えコンテンツの追加)で表されます。"-"行を" "に変換し、"+"行を削除することで、修正のステージングを防ぐことができます。ペアの半分だけを修正すると、インデックスに紛らわしい変化が生じやすいので注意が必要です。
There are also more complex operations that can be performed. But beware that because the patch is applied only to the index and not the working tree, the working tree will appear to "undo" the change in the index. For example, introducing a new line into the index that is in neither the HEAD
nor the working tree will stage the new line for commit, but the line will appear to be reverted in the working tree.
これらの構造の使用は避けるか、または細心の注意を払って行ってください。
- 手つかずのコンテンツの削除
-
インデックスと作業ツリーの間に違いのないコンテンツは、「 」(スペース)で始まるコンテクストラインに表示することができます。スペースを"-"に変換することで、コンテクストラインを削除するように設定できます。その結果として生成された作業ツリー ファイルは、コンテンツを再追加するように表示されます。
- 既存のコンテンツの変更
-
また、コンテクスト行を削除するためにステージングし(" "を"-"に変換)、新しい内容の"+"行を追加することで、コンテクスト行を修正することができます。同様に、既存の追加や修正のために「+」行を修正することもできます。いずれの場合も、作業ツリーでは新しい修正が元に戻されて表示されます。
- 新規コンテンツ
-
パッチに存在しない新しいコンテンツを追加することもできます。単に新しい行を追加すると、各コンテンツは "+" で始まります。追加は作業ツリーで元に戻された状態で表示されます。
また、パッチの適用が不可能になるため、完全に避けるべき操作もいくつかあります。
-
文脈(" ")や削除("-")の追加
-
コンテキストまたは行の削除
-
コンテキストの内容を変更もしくは行の削除
設定
このセクションのこの行以下は、 git-config[1] のドキュメントから抜粋して含まれています。内容は同ドキュメントにあるものと同じです:
Warning
|
Missing See original version for this content. |
GIT
Part of the git[1] suite