セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.45.1 → 2.47.0 変更なし
-
2.45.0
04/29/24
- 2.43.1 → 2.44.2 変更なし
-
2.43.0
11/20/23
- 2.35.1 → 2.42.3 変更なし
-
2.35.0
01/24/22
- 2.31.1 → 2.34.8 変更なし
-
2.31.0
03/15/21
- 2.27.1 → 2.30.9 変更なし
-
2.27.0
06/01/20
- 2.25.2 → 2.26.3 変更なし
- 2.25.1 変更なし
- 2.22.1 → 2.25.0 変更なし
-
2.22.0
06/07/19
- 2.14.6 → 2.21.4 変更なし
-
2.13.7
05/22/18
- 2.12.5 変更なし
-
2.11.4
09/22/17
- 2.10.5 変更なし
-
2.9.5
07/30/17
- 2.7.6 → 2.8.6 変更なし
-
2.6.7
05/05/17
- 2.5.6 変更なし
-
2.4.12
05/05/17
- 2.1.4 → 2.3.10 変更なし
-
2.0.5
12/17/14
概要
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
が指すファイルに書き込む傾向があります。
オプション
- <ツリー>
-
既存のツリーオブジェクト。
- -p <親>
-
各
-p
は、親コミットオブジェクトのIDを示します。 - -m <メッセージ>
-
コミットログメッセージの段落。これは複数回指定でき、各<メッセージ>は独自の段落になります。
- -F <ファイル>
-
指定されたファイルからコミットログメッセージを読み取ります。標準入力から読み取るには
-
を使用します。これは複数回指定でき、各ファイルの内容が独自の段落になります。 - -S[<キーID>]
- --gpg-sign[=<キーID>]
- --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は、ある程度文字エンコーディングに依存しません。
-
blobオブジェクトの内容は、解釈されないバイトシーケンスです。コアレベルでは、エンコーディング変換はありません。
-
パス名は、UTF-8正規化形式Cでエンコードされます。これは、ツリーオブジェクト、インデックスファイル、ref名、およびコマンドライン引数、環境変数、および設定ファイル(
.git/config
(git-config[1]を参照)、gitignore[5]、gitattributes[5]、およびgitmodules[5])のパス名に適用されます。コアレベルでは、Gitはパス名を単に非NULバイトのシーケンスとして扱っており、パス名エンコーディング変換(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
上記の設定で作成されたコミットオブジェクトは、
encoding
ヘッダーにi18n.commitEncoding
の値を記録します。これは、後でそれらを見る他の人を支援するためです。このヘッダーがない場合、コミットログメッセージは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]スイートの一部