SYNOPSIS
'git notes' [list [<object>]]
'git notes' add [-f] [--allow-empty] [--[no-]separator | --separator=<paragraph-break>] [--[no-]stripspace] [-F <file> | -m <msg> | (-c | -C) <object>] [-e] [<object>]
'git notes' copy [-f] ( --stdin | <from-object> [<to-object>] )
'git notes' append [--allow-empty] [--[no-]separator | --separator=<paragraph-break>] [--[no-]stripspace] [-F <file> | -m <msg> | (-c | -C) <object>] [-e] [<object>]
'git notes' edit [--allow-empty] [<object>] [--[no-]stripspace]
'git notes' show [<object>]
'git notes' merge [-v | -q] [-s <strategy> ] <notes-ref>
'git notes' merge --commit [-v | -q]
'git notes' merge --abort [-v | -q]
'git notes' remove [--ignore-missing] [--stdin] [<object>...]
'git notes' prune [-n] [-v]
'git notes' get-ref
DESCRIPTION
オブジェクト自体に触れることなく、オブジェクトに添付のノートを追加、削除、または読み取ります。
デフォルトでは、ノートは refs/notes/commits
に保存され、そこから読み取られますが、このデフォルトはオーバーライドできます。 以下の「OPTIONS」セクション、「CONFIGURATION」セクション、「ENVIRONMENT」のセクションを参照してください。 このrefが存在しない場合、ノートを保存するために最初に必要になったときに黙って作成されます。
ノートの一般的な使用法は、コミット自体を変更せずにコミットメッセージを補足することです。 ノートは、元のコミットメッセージとともに git
log
で表示できます。 コミットオブジェクトに格納されているメッセージと区別するために、ノートはメッセージと同様にインデントされます。インデントされていない行には "Notes (<refname>):" (refs/notes/commits
の場合は "Notes:") と書かれています。
--notes
オプションを使用して、 git
format-patch
で作成されたパッチにノートを追加することもできます。 このようなノートは、3つのダッシュの区切り行の後にパッチの解説として追加されます。
git
log
で表示されるノートを変更するには、 [CONFIGURATION] の notes.displayRef
についての議論を参照してください。
コミットを書き換えるコマンド間でノートを渡す法については、 notes.rewrite.
<command> 構成を参照してください。
SUBCOMMANDS
- list
-
List the notes object for a given object. If no object is given, show a list of all note objects and the objects they annotate (in the format "<note-object> <annotated-object>"). This is the default subcommand if no subcommand is given.
- add
-
Add notes for a given object (defaults to HEAD). Abort if the object already has notes (use
-f
to overwrite existing notes). However, if you’re usingadd
interactively (using an editor to supply the notes contents), then - instead of aborting - the existing notes will be opened in the editor (like theedit
subcommand). If you specify multiple-m
and-F
, a blank line will be inserted between the messages. Use the--separator
option to insert other delimiters. You can use-e
to edit and fine-tune the message(s) supplied from-m
and-F
options interactively (using an editor) before adding the note. - copy
-
最初のオブジェクトのノートを2番目のオブジェクト(デフォルトはHEAD)にコピーします。 2番目のオブジェクトにすでにノートがある場合、または最初のオブジェクトにノートがない場合は中止(abort)します(
-f
を使用して2番目のオブジェクトの既存のノートを上書きします)。このサブコマンドはgit
notes
add
[-f
]-C
$
(git
notes
list
<from-object>) <to-object> と同等です。--stdin
モードでは、以下の形式で行を取得します<from-object> SP <to-object> [ SP <rest> ] LF
標準入力で、各<from-object>から対応する<to-object>にノートをコピーします。 (オプションの <rest> は無視されるため、コマンドは
post-rewrite
フックに与えられた入力を読み取ることができます。) - append
-
Append new message(s) given by
-m
or-F
options to an existing note, or add them as a new note if one does not exist, for the object (defaults to HEAD). When appending to an existing note, a blank line is added before each new message as an inter-paragraph separator. The separator can be customized with the--separator
option. Edit the notes to be appended given by-m
and-F
options with-e
interactively (using an editor) before appending the note. - edit
-
指定のオブジェクトのノートを編集します(デフォルトはHEAD)。
- show
-
指定のオブジェクトのノートを表示します(デフォルトはHEAD)。
- merge
-
指定のノートrefを現在のノートrefにマージします。 これにより、マージベース(存在する場合)以降に指定されたnote参照(「remote」と呼ばれる)によって行われた変更が現在のノートref(「local」と呼ばれる)にマージされます。
競合が発生し、競合するノートを自動的に解決するための戦略(「NOTES MERGE STRATEGIES」セクション参照)が指定されていない場合は、「manual」(手動)リゾルバーが使用されます。 このリゾルバーは、特別なワークツリー(
.git/NOTES_MERGE_WORKTREE
)内の競合するノートをチェックアウトし、そこで競合を手動で解決するようにユーザーに指示します。 完了したら、ユーザーはgit
notes
merge
--commit
を使用してマージを完了するか、git
notes
merge
--abort
を使用してマージを中止(abort)できます。 - remove
-
指定のオブジェクトのノートを削除します(デフォルトはHEAD)。 コマンドラインから0個または1個のオブジェクトを指定する場合、これは
edit
サブコマンドに空のノートメッセージを指定することと同じです。 - prune
-
存在しない(non-existing)/到達できない(unreachable) オブジェクトのすべてのノートを削除します。
- get-ref
-
現在のノートを出力します。これにより、現在のノートrefを(スクリプトなどから)簡単に取得する方法が提供されます。
OPTIONS
-
-f
-
--force
-
すでにノートがあるオブジェクトにノートを追加する場合は、(中止するのではなく、)既存のノートを上書きします。
-
-m
<msg> -
--message=
<msg> -
Use the given note message (instead of prompting). If multiple
-m
options are given, their values are concatenated as separate paragraphs. Lines starting with # and empty lines other than a single line between paragraphs will be stripped out. If you wish to keep them verbatim, use--no-stripspace
. -
-F
<file> -
--file=
<file> -
Take the note message from the given file. Use - to read the note message from the standard input. Lines starting with # and empty lines other than a single line between paragraphs will be stripped out. If you wish to keep them verbatim, use
--no-stripspace
. -
-C
<object> -
--reuse-message=
<object> -
指定の BLOB オブジェクト(たとえば別のノート)をノート・メッセージとして受け取ります。 (オブジェクト間でノートをコピーするには、 これの代わりに
git
Notes
copy
<object> を使用してください。) デフォルトでは、 メッセージはそのままコピーされますが、 # で始まる行や段落間の2行以上の空行を削除したい場合、--stripspace
オプションとともに使用します。 -
-c
<object> -
--reedit-message=
<object> -
-C と同様ですが、
-c
を使用するとエディタが呼び出されるため、ユーザーはノートメッセージをさらに編集できます。 -
--allow-empty
-
空のノートオブジェクトを保存できるようにします。 デフォルトの動作では、空のノートは自動的に削除されます。
-
--
[no-
]separator
,--separator=
<paragraph-break> -
カスタムの段落間区切りとして使用する文字列を指定します (必要に応じて末尾に改行(newline)が追加されます)。
--no-separator
の場合、 段落間に区切りは追加されません。 これのデフォルトは1行の空行です。 -
--
[no-
]stripspace
-
Strip leading and trailing whitespace from the note message. Also strip out empty lines other than a single line between paragraphs. Lines starting with # will be stripped out in non-editor cases like
-m
,-F
and-C
, but not in editor case likegit
notes
edit
,-c
, etc. -
--ref
<ref> -
<ref>のノートツリーを操作します。 これは、
GIT_NOTES_REF
と、core.notesRef
構成をオーバーライドします。 refは、refs/notes/
で始まる完全なref名を指定します。notes/
で始まる場合、refs/
が接頭辞として付けられ、それ以外の場合はrefs/notes/
が接頭辞として付けられ、refのフルネームを形成します。 -
--ignore-missing
-
ノートが添付されていないオブジェクトからノートの削除を要求することをエラーと見なさないでください。
-
--stdin
-
また、ノートを削除するために標準入力からオブジェクト名を読み取る(コマンドラインからオブジェクト名と組み合わせることができないわけではありません)。
-
-n
-
--dry-run
-
何も削除しないでください。 ノートが削除されるオブジェクト名を報告するだけです。
-
-s
<strategy> -
--strategy=
<strategy> -
ノートをマージするときは、指定の戦略を使用してノートの競合を解決します。 次の戦略が認識されます:
manual
(デフォルト)、ours
、theirs
、union
、cat_sort_uniq
。 このオプションは、notes.mergeStrategy
構成設定をオーバーライドします。 各ノートマージ戦略の詳細については、以下の「NOTES MERGE STRATEGIES」セクションを参照してください。 -
--commit
-
進行中の
git
notes
merge
を完了させます。.git/NOTES_MERGE_WORKTREE
に保存されているgit
notes
merge
の競合を解決した場合は、このオプションを使用します。 これにより、.git/NOTES_MERGE_WORKTREE
にノートを追加することで、git
notes
merge
(.git/NOTES_MERGE_PARTIAL
に保存)によって作成された部分的なマージコミットが修正されます。.git/NOTES_MERGE_REF
symref に保存されているノートrefは、結果のコミットに更新されます。 -
--abort
-
進行中の
git
notes
merge
を 中止(abort)/リセット します。つまり、ノートのマージは競合を伴います。これにより、ノートのマージに関連するすべてのファイルが削除されます。 -
-q
-
--quiet
-
ノートをマージするときは、黙って作業します。
-
-v
-
--verbose
-
ノートをマージするときは、よりおしゃべりになります。ノートを刈り込むときは、ノートが削除されたすべてのオブジェクト名を報告してください。
DISCUSSION
コミットノートは、オブジェクトに関する追加情報(通常はコミットのメッセージを補足する情報)を含むブロブです。 これらのブロブは、ノートrefから取得されます。 ノートrefは通常、パスが記述されたオブジェクトのオブジェクト名である「ファイル」を含むブランチであり、パフォーマンス上の理由からいくつかのディレクトリ区切り文字が含まれています。
[ 許可されるパス名の形式は bf/fe/30/
...
/680d5a.
.. です。2桁の16進数のディレクトリ名のシーケンスそれぞれの後に、残りのオブジェクトIDを含むファイル名が続きます。 ]
ノートを変更するたびに、指定したノート参照に新しいコミットが作成されます。 したがって、たとえば git
log
-p
notes/commits
を実行することで、ノートの履歴を調べることができます。 現在のところ、コミットメッセージには更新のきっかけとなった操作が記録されているだけで、コミットの作者は通常のルールに従って決定されます(git-commit(1) 参照)。 これらの詳細は、将来的に変更される可能性があります。
ノートrefがツリーオブジェクトを直接指すことも許可されています。その場合、ノートの履歴は git
log
-p
-g
<refname> で読み取ることができます。
NOTES MERGE STRATEGIES
デフォルトのノートマージ戦略は「manual」です。これは、ノートの競合を解決するために特別な作業ツリー(.git/NOTES_MERGE_WORKTREE
)で競合するノートをチェックアウトし、そのワークツリーで競合を解決するようにユーザーに指示します。完了したら、ユーザーは git
notes
merge
--commit
を使用してマージを完了するか、 git
notes
merge
--abort
を使用してマージを中止できます。
ユーザーは、-s
/--strategy
オプションを使用するか、 notes.mergeStrategy を適宜構成して、以下の中から自動マージ戦略を選択できます:
「ours」は、競合するノートを自動的に解決して、ローカルバージョン(つまり、現在のノートref)を優先します。
「theirs」は、リモートバージョンを優先してノートの競合を自動的に解決します(つまり、指定されたノートrefが現在のノートrefにマージされます)。
「union」は、ローカルバージョンとリモートバージョンを連結することにより、ノートの競合を自動的に解決します。
「cat_sort_uniq」は union
に似ていますが、この戦略は、ローカルバージョンとリモートバージョンを連結することに加えて、結果の行を並べ替え、結果から重複する行を削除します。 これは、 cat
| sort
| uniq
シェルパイプラインをローカルバージョンとリモートバージョンに適用するのと同じです。この戦略は、ノートが行ベースの形式に従っていて、マージ結果で行が重複しないようにする場合に役立ちます。 ローカルバージョンまたはリモートバージョンのいずれかにマージ前に既に重複行が含まれている場合、これらもこのノートマージ戦略によって削除されることに注意してください。
EXAMPLES
あなたはノートを使用して、コミットが書き込まれた時点では利用できなかった情報を含む注釈を追加できます。
$ git notes add -m 'Tested-by: Johannes Sixt <j6t@kdbg.org>' 72a144e2
$ git show -s 72a144e
[...]
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Notes:
Tested-by: Johannes Sixt <j6t@kdbg.org>
原則として、ノートは通常のGitブロブであり、あらゆる種類の形式(または非形式)が受け入れられます。 git
hash-object
を使用して、任意のファイルから安全にノートを作成できます:
$ cc *.c
$ blob=$(git hash-object -w a.out)
$ git notes --ref=built add --allow-empty -C "$blob" HEAD
(これはバイナリセーフ(binary-safe)ではないため、単純に git
notes
--ref=built
add
-F
a.out
HEAD
を使用することはできません。) もちろん、テキスト形式以外のノートを git
log
で表示することはあまり意味がありません。なので、あなたがそのようなノートを使用する場合は、それらを使用して何か便利なことを行うために、あなたはおそらくいくつかの特別な目的のツールを作成する必要があります。
CONFIGURATION
- core.notesRef
-
refs/notes/commits
の代わりに読み取りおよび操作するノートref。省略されていないref名である必要があります。この設定は、環境およびコマンドラインから上書きできます。
このセクションのこの行より上にあるものはすべて、 git-config(1) ドキュメントには含まれていません。 以下の内容に関しては、git-config(1) ドキュメント にあるものと同一です。
- notes.mergeStrategy
-
ノートの競合を解決するときにデフォルトで選択するマージ戦略。
manual
、` ours`、theirs
、` union` 、cat_sort_uniq
のいずれかである必要があります。 デフォルトはmanual
です。 各戦略の詳細については、 git-notes(1) の「NOTES MERGE STRATEGIES」セクションを参照してください。この設定は、
--strategy
オプションを git-notes(1) に渡すことでオーバーライドできます。 - notes.<name>.mergeStrategy
-
refs/notes/
<name> にノートをマージするときに、どのマージ戦略を選択するか。 これは、より一般的なnotes.mergeStrategy
をオーバーライドします。 利用可能な戦略の詳細については、 git-notes(1) の「NOTES MERGE STRATEGIES」セクションを参照してください。 - notes.displayRef
-
git
log
系のコマンドでコミット・メッセージを表示する際に、core.notesRef
やGIT_NOTES_REF
で設定したデフォルトに加えて、どのref (グロブ、または複数回指定されている場合は複数ref)からノートを読み込むかを指定します。この設定は、
GIT_NOTES_DISPLAY_REF
環境変数でオーバーライドでき、環境変数はコロンで区切られたrefまたはグロブ(glob)のリストである必要があります。存在しないrefsに対しては警告が発行されますが、どのrefsにもマッチしないグロブは黙って無視されます。
この設定は、コマンドの
git
log
系の--no-notes
オプション、またはこれらのコマンドで受け入れられる--notes=
<ref> オプションによって無効にすることができます。core.notesRef
の有効な値(GIT_NOTES_REFによってオーバーライドされる可能性があります)も、表示されるrefのリストに暗黙的に追加されます。 - notes.rewrite.<command>
-
<command> (現在は
amend
またはrebase
)でコミットを書き換え、 そして、 この変数がfalse
に設定されている場合、git はノートを元のコミットから書き換えられたコミットにコピーしません。 デフォルトはtrue
です。 下記notes.rewriteRef
も参照してください。この設定は、
GIT_NOTES_REWRITE_REF
環境変数でオーバーライドでき、環境変数はコロンで区切られたrefまたはグロブ(glob)のリストである必要があります。 - notes.rewriteMode
-
書き換え時にノートをコピーする場合(
notes.rewrite.
<command> オプション参照)、ターゲットコミットにすでにノートがある場合の対処方法を決定します。overwrite
、concatenate
、cat_sort_uniq
、ignore
のいずれかである必要があります。 デフォルトはconcatenate
です。この設定は、
GIT_NOTES_REWRITE_MODE
環境変数でオーバーライドできます。 - notes.rewriteRef
-
書き換え中にノートをコピーする場合は、ノートをコピーする(完全修飾された)refを指定します。 グロブと見なしたら、マッチするすべてのrefのノートがコピーされます。 この構成を複数回指定することもできます。
デフォルト値はありません。 ノートの書き換えを有効にするには、この変数を構成する必要があります。 デフォルトのコミットノートの書き換えを有効にするには、これを
refs/notes/commits
に設定します。GIT_NOTES_REWRITE_REF
環境変数でオーバーライドできます。 その形式の詳細については、上記notes.rewrite.
<command> を参照してください。
ENVIRONMENT
-
GIT_NOTES_REF
-
refs/notes/commits
の代わりに、どのrefからノートを操作するか。 これはcore.notesRef
設定を上書きします。 -
GIT_NOTES_DISPLAY_REF
-
コロンで区切られた ref または glob のリスト。コミットメッセージを表示する際に、デフォルトの
core.notesRef
またはGIT_NOTES_REF
に加えて、どの ref からノートを読み込むかを指定します。 これはnotes.displayRef
の設定よりも優先されます。存在しないrefに対して警告が発行されますが、どのrefとも一致しないグロブ(glob)は黙って無視されます。
-
GIT_NOTES_REWRITE_MODE
-
書き換え中にノートをコピーするときに、ターゲットコミットにすでにノートがある場合の対処方法。
overwrite
、concatenate
、cat_sort_uniq
、ignore
のいずれかである必要があります。 これはcore.rewriteMode
設定を上書きします。 -
GIT_NOTES_REWRITE_REF
-
コミットを書き換える場合、元のコミットから書き換えられたコミットにコピーするためのノート。refまたはグロブ(glob)のコロンで区切られたリストである必要があります。
環境で設定されていない場合、コピーするノートのリストは、
notes.rewrite.
<command> およびnotes.rewriteRef
の設定によって異なります。
GIT
Part of the git(1) suite