セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.49.1 → 2.50.1 変更なし
-
2.49.0
2025-03-14
- 2.45.1 → 2.48.2 変更なし
-
2.45.0
2024-04-29
- 2.43.1 → 2.44.4 変更なし
-
2.43.0
2023-11-20
- 2.35.1 → 2.42.4 変更なし
-
2.35.0
2022-01-24
- 2.31.1 → 2.34.8 変更なし
-
2.31.0
2021-03-15
- 2.27.1 → 2.30.9 変更なし
-
2.27.0
2020-06-01
- 2.25.2 → 2.26.3 変更なし
- 2.25.1 変更なし
- 2.22.1 → 2.25.0 変更なし
-
2.22.0
2019-06-07
- 2.14.6 → 2.21.4 変更なし
-
2.13.7
2018-05-22
- 2.12.5 変更なし
-
2.11.4
2017-09-22
- 2.10.5 変更なし
-
2.9.5
2017-07-30
- 2.7.6 → 2.8.6 変更なし
-
2.6.7
2017-05-05
- 2.5.6 変更なし
-
2.4.12
2017-05-05
- 2.1.4 → 2.3.10 変更なし
-
2.0.5
2014-12-17
概要
git commit-tree <tree> [(-p <parent>)…] git commit-tree [(-p <parent>)…] [-S[<keyid>]] [(-m <message>)…] [(-F <file>)…] <tree>
説明
これは通常、エンドユーザーが直接実行したいものではありません。代わりに git-commit[1] を参照してください。
提供されたツリーオブジェクトに基づいて新しいコミットオブジェクトを作成し、新しいコミットオブジェクトIDを標準出力に出力します。-m
または -F
オプションが指定されていない限り、ログメッセージは標準入力から読み込まれます。
-m
および -F
オプションは、任意の順序で何度でも指定できます。コミットログメッセージは、オプションが指定された順序で構成されます。
コミットオブジェクトは任意の数の親を持つことができます。親がちょうど1つの場合、それは通常のコミットです。複数の親を持つコミットは、いくつかの履歴ライン間のマージになります。初期(ルート)コミットは親を持ちません。
ツリーが作業ディレクトリの特定のディレクトリ状態を表すのに対し、コミットは「時間」におけるその状態を表し、そこに到達する方法を説明します。
通常、コミットは新しい「HEAD」状態を識別しますが、Gitはその状態に関するメモをどこに保存するかは気にしません。実際には、.git/HEAD
が指すファイルに結果を書き込む傾向があるため、最後にコミットされた状態が常にわかります。
オプション
- <tree>
-
既存のツリーオブジェクト。
- -p <parent>
-
各
-p
は親コミットオブジェクトのIDを示します。 - -m <message>
-
コミットログメッセージ内の段落。これは複数回指定でき、各 <message> はそれ自身の段落になります。
- -F <file>
-
指定されたファイルからコミットログメッセージを読み取ります。標準入力から読み取るには
-
を使用します。これは複数回指定でき、各ファイルの内容はそれ自身の段落になります。 - -S[<keyid>]
- --gpg-sign[=<keyid>]
- --no-gpg-sign
-
コミットをGPG署名します。
keyid
引数はオプションで、コミッターのIDにデフォルト設定されます。指定された場合、スペースなしでオプションに付加する必要があります。--no-gpg-sign
は、コマンドラインで以前に指定された--gpg-sign
オプションを打ち消すのに役立ちます。
コミット情報
コミットは以下をカプセル化します。
-
すべての親オブジェクトID
-
著者名、メール、日付
-
コミッター名、メール、コミット時刻。
コミットコメントは標準入力から読み込まれます。「<」リダイレクトによって変更ログエントリが提供されない場合、git commit-tree は入力され ^D で終了されるまで待ちます。
日付形式
GIT_AUTHOR_DATE
と GIT_COMMITTER_DATE
環境変数は、以下の日付形式をサポートしています。
- Git内部形式
-
これは <unix-timestamp> <time-zone-offset> であり、<unix-timestamp> はUNIXエポックからの秒数です。<time-zone-offset> はUTCからの正または負のオフセットです。例えば、CET (UTCより1時間進んでいる) は
+0100
です。 - RFC 2822
-
RFC 2822 で記述されている標準の日付形式。例えば
Thu,
07
Apr
2005
22:13:13
+0200
。 - ISO 8601
-
ISO 8601標準で指定された時刻と日付(例:
2005-04-07T22:13:13
)。パーサーはT
文字の代わりにスペースも受け入れます。秒の小数部分は無視されます。たとえば、2005-04-07T22:13:13.019
は2005-04-07T22:13:13
として扱われます。注さらに、日付部分は YYYY.MM.DD
、MM/DD/YYYY
、DD.MM.YYYY
の形式で受け入れられます。
議論
Gitはある程度、文字エンコーディングに依存しません。
-
ブロブオブジェクトの内容は、解釈されないバイトのシーケンスです。コアレベルでのエンコーディング変換はありません。
-
パス名はUTF-8正規化形式Cでエンコードされます。これは、ツリーオブジェクト、インデックスファイル、参照名、およびコマンドライン引数、環境変数、設定ファイル (
.git/config
( git-config[1] を参照)、gitignore[5]、gitattributes[5]、gitmodules[5]) のパス名に適用されます。Gitはコアレベルではパス名を単にNULLバイト以外のバイトのシーケンスとして扱っており、パス名のエンコード変換は行われないことに注意してください (MacとWindowsを除く)。したがって、非ASCIIパス名を使用しても、従来の拡張ASCIIエンコーディングを使用するプラットフォームやファイルシステムでもほとんどの場合機能します。ただし、そのようなシステムで作成されたリポジトリは、UTF-8ベースのシステム (例: Linux、Mac、Windows) では正しく機能せず、逆もまた同様です。さらに、多くのGitベースのツールはパス名をUTF-8であると単純に想定しており、他のエンコーディングを正しく表示できません。
-
コミットログメッセージは通常UTF-8でエンコードされますが、他の拡張ASCIIエンコーディングもサポートされています。これにはISO-8859-x、CP125xなどが含まれますが、UTF-16/32、EBCDIC、CJK多バイトエンコーディング (GBK、Shift-JIS、Big5、EUC-x、CP9xxなど) は**含まれません**。
コミットログメッセージをUTF-8でエンコードすることを推奨しますが、コアとGit Porcelainの両方がプロジェクトにUTF-8を強制しないように設計されています。特定のプロジェクトのすべての参加者がレガシーエンコーディングを使用する方が便利だと感じる場合、Gitはそれを禁止しません。ただし、いくつかの留意点があります。
-
git
commit
とgit
commit-tree
は、与えられたコミットログメッセージが有効なUTF-8文字列に見えない場合、プロジェクトがレガシーエンコーディングを使用することを明示的に指定しない限り警告を発します。これを指定する方法は、.git/config
ファイルにi18n.commitEncoding
を次のように設定することです。[i18n] commitEncoding = ISO-8859-1
上記のこの設定で作成されたコミットオブジェクトは、
i18n.commitEncoding
の値をそのencoding
ヘッダーに記録します。これは、後でそれらを見る他の人々を助けるためです。このヘッダーがない場合、コミットログメッセージはUTF-8でエンコードされていることを意味します。 -
git
log
、git
show
、git
blame
などは、コミットオブジェクトのencoding
ヘッダーを見て、特に指定がない限りログメッセージをUTF-8に再エンコードしようとします。必要な出力エンコーディングは、.git/config
ファイルのi18n.logOutputEncoding
で次のように指定できます。[i18n] logOutputEncoding = ISO-8859-1
この設定変数が存在しない場合、代わりに
i18n.commitEncoding
の値が使用されます。
コミット時にコミットオブジェクトレベルでUTF-8を強制するためにコミットログメッセージを再コードしないことを意図的に選択したことに注意してください。これは、UTF-8への再コードは必ずしも可逆操作ではないためです。
GIT
git[1]スイートの一部