セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.46.1 → 2.50.1 変更なし
-
2.46.0
2024-07-29
- 2.43.1 → 2.45.4 変更なし
-
2.43.0
2023-11-20
- 2.42.1 → 2.42.4 変更なし
-
2.42.0
2023-08-21
- 2.41.1 → 2.41.3 変更なし
-
2.41.0
2023-06-01
- 2.40.1 → 2.40.4 変更なし
-
2.40.0
2023-03-12
- 2.39.1 → 2.39.5 変更なし
-
2.39.0
2022-12-12
- 2.35.1 → 2.38.5 変更なし
-
2.35.0
2022-01-24
- 2.32.1 → 2.34.8 変更なし
-
2.32.0
2021-06-06
- 2.27.1 → 2.31.8 変更なし
-
2.27.0
2020-06-01
- 2.25.1 → 2.26.3 変更なし
-
2.25.0
2020-01-13
- 2.1.4 → 2.24.4 変更なし
-
2.0.5
2014-12-17
説明
Git には、システム固有のヘルパーから認証情報を保存および取得したり、ユーザーにユーザー名とパスワードを要求したりするための内部インターフェイスがあります。git-credential コマンドは、Git と同じ方法で認証情報を取得、保存、または要求したいスクリプトにこのインターフェイスを公開します。このスクリプト可能なインターフェイスの設計は、内部 C API をモデルにしています。概念の詳細については、credential.h を参照してください。
git-credential はコマンドラインで「アクション」オプション(fill
、approve
、または reject
のいずれか)を受け取り、標準入力で認証情報の記述を読み取ります(入力/出力形式を参照)。
アクションが fill
の場合、git-credential は設定ファイルを読み取ったり、設定されている認証情報ヘルパーに接続したり、ユーザーにプロンプトを表示したりすることで、記述に「username」と「password」属性を追加しようとします。その後、認証情報の記述のユーザー名とパスワード属性は、既に提供されている属性とともに標準出力に出力されます。
アクションが approve
の場合、git-credential は記述を設定されている認証情報ヘルパーに送信し、ヘルパーは後で利用するために認証情報を保存する可能性があります。
アクションが reject
の場合、git-credential は記述を設定されている認証情報ヘルパーに送信し、ヘルパーは記述に一致する保存済みの認証情報を消去する可能性があります。
アクションが capability
の場合、git-credential はサポートしている機能を標準出力にアナウンスします。
アクションが approve
または reject
の場合、出力は発生しません。
GIT CREDENTIAL の一般的な使用法
git-credential を使用するアプリケーションは、通常、以下の手順で git
credential
を使用します。
-
コンテキストに基づいて認証情報記述を生成します。
たとえば、
https://example.com/foo.git
のパスワードが必要な場合、次のような認証情報記述を生成する可能性があります(末尾の空白行を忘れないでください。これは、アプリケーションがすべての情報の入力を完了したことをgit
credential
に伝えます)protocol=https host=example.com path=foo.git
-
git-credential に、この記述に対するユーザー名とパスワードを要求します。これは、
git
credential
fill
を実行し、手順 (1) の記述を標準入力にフィードすることで行われます。完全な認証情報記述(認証情報自体、つまりログインとパスワードを含む)は、次のように標準出力で生成されます。protocol=https host=example.com username=bob password=secr3t
ほとんどの場合、これは入力で与えられた属性が出力で繰り返されることを意味しますが、Git は認証情報記述を変更する可能性もあります。たとえば、プロトコルが HTTP(s) で
credential.useHttpPath
が false の場合、path
属性を削除する場合があります。git
credential
がパスワードを知っていた場合、この手順では、password=secr3t
を返す前に、ユーザーが実際にこのパスワードを入力する必要がない可能性があります(代わりに、ユーザーはキーチェーンのロックを解除するためにパスワードを入力したか、キーチェーンが既にロック解除されている場合はユーザー操作は行われませんでした)。 -
認証情報を使用し(例:手順 (2) のユーザー名とパスワードで URL にアクセスし)、それが受け入れられるかどうかを確認します。
-
パスワードの成功または失敗を報告します。認証情報によって操作が正常に完了できた場合、「approve」アクションでマークして、
git
credential
に次の呼び出しで再利用するように伝えます。認証情報が操作中に拒否された場合、「reject」アクションを使用して、git
credential
が次の呼び出しで新しいパスワードを要求するようにします。いずれの場合も、git
credential
には、手順 (2) で取得した認証情報記述(手順 (1) で提供されたフィールドも含む)がフィードされるべきです。
入力/出力形式
git
credential
は、標準入力/出力で(使用されるアクションに応じて)認証情報情報を読み取り/書き込みます。この情報には、git
credential
がログイン情報を取得するキー(例:ホスト、プロトコル、パス)または取得する実際の認証情報データ(ユーザー名/パスワード)のいずれかに対応できます。
認証情報は、名前付き属性のセットに分割され、1 行に 1 つの属性があります。各属性は、=
(イコール) 記号で区切られたキーと値のペアで指定され、その後に改行が続きます。
キーには、=
、改行、または NUL 以外の任意のバイトを含めることができます。値には、改行または NUL 以外の任意のバイトを含めることができます。実装が効率的に解析できるように、末尾の改行を含む行は 65535 バイトを超えることはできません。
C スタイルの角括弧 [] で終わるキーを持つ属性は、複数の値を持つことができます。多値属性の各インスタンスは、値の順序付けられたリストを形成します。繰り返される属性の順序は、値の順序を定義します。空の多値属性(key[]=\n)は、以前のエントリをクリアし、リストをリセットする役割を果たします。
すべての場合において、すべてのバイトはそのまま扱われます(つまり、クォートはなく、改行または NUL を含む値を送信することはできません)。属性のリストは、空白行またはファイルの終わりで終了します。
Git は以下の属性を認識します。
protocol
-
認証情報が使用されるプロトコル (例:
https
)。 host
-
ネットワーク認証情報のリモートホスト名。ポート番号が指定されている場合はポート番号も含まれます (例: "example.com:8088")。
path
-
認証情報が使用されるパス。例として、リモートの HTTPS リポジトリにアクセスする場合、これはサーバー上のリポジトリのパスになります。
username
-
認証情報のユーザー名。既に持っている場合(例: URL、設定、ユーザー、または以前に実行されたヘルパーから)。
password
-
認証情報のパスワード (保存を要求している場合)。
password_expiry_utc
-
OAuth アクセストークンなどの生成されたパスワードには有効期限がある場合があります。ヘルパーから認証情報を読み取る際、
git
credential
fill
は期限切れのパスワードを無視します。Unix 時間 UTC、1970年からの秒数で表されます。 oauth_refresh_token
-
OAuth アクセストークンであるパスワードには、OAuth リフレッシュトークンが付随する場合があります。ヘルパーは、この属性をパスワード属性と同様に機密情報として扱う必要があります。Git 自体は、この属性に対して特別な動作はありません。
url
-
この特別な属性が
git
credential
によって読み取られると、その値は URL として解析され、その構成要素が読み取られたかのように扱われます(例:url=https://example.com
は、protocol=https
とhost=example.com
が提供されたかのように動作します)。これは、呼び出し元が URL を自分で解析する手間を省くのに役立ちます。プロトコルの指定は必須であり、URL がホスト名(例:「cert:///path/to/file」)を指定しない場合、認証情報には値が空の文字列であるホスト名属性が含まれることに注意してください。
URL に存在しないコンポーネント(例:上記の例にユーザー名がない)は未設定のままになります。
authtype
-
これは、対象の認証スキームを使用する必要があることを示します。HTTP および HTTPS の一般的な値には、
basic
、bearer
、およびdigest
がありますが、後者は安全でないため使用すべきではありません。credential
が使用される場合、これは対象のプロトコル(通常は HTTP)に適した任意の文字列に設定できます。この値は、入力に適切な機能 (下記参照) が提供されていない限り、送信すべきではありません。
credential
-
対象のプロトコル(通常は HTTP)に適した、事前にエンコードされた認証情報。このキーが送信される場合、
authtype
は必須であり、username
とpassword
は使用されません。HTTP の場合、Git はauthtype
の値とこの値をスペースで連結してAuthorization
ヘッダーを決定します。この値は、入力に適切な機能 (下記参照) が提供されていない限り、送信すべきではありません。
ephemeral
-
このブール値は、真の場合、
credential
フィールドの値は有用性が時間的に限定されているため、認証情報ヘルパーによって保存されるべきではないことを示します。例えば、HTTP Digest のcredential
値はノンスを使用して計算され、再利用しても認証は成功しません。これは、短期間(例:24時間)の認証情報の場合にも使用されることがあります。デフォルト値は false です。認証情報ヘルパーは、操作が成功したかどうかを判断するために、引き続き
store
またはerase
と共に呼び出されます。この値は、入力に適切な機能 (下記参照) が提供されていない限り、送信すべきではありません。
state
[]-
この値は、このヘルパーが再度呼び出された場合に、このヘルパーに返される不透明な状態を提供します。各異なる認証情報ヘルパーは、これを一度指定できます。値には、認証情報ヘルパーに固有のプレフィックスを含める必要があり、そのプレフィックスに一致しない値は無視する必要があります。
この値は、入力に適切な機能 (下記参照) が提供されていない限り、送信すべきではありません。
continue
-
これはブール値で、有効な場合、この認証が多段階認証ステップの最終ではない部分であることを示します。これは、NTLM や Kerberos などのプロトコルで一般的であり、2 ラウンドのクライアント認証が必要な場合、このフラグを設定することで、認証情報ヘルパーが多段階認証ステップを実装できます。このフラグは、次の段階が必要な場合にのみ送信されるべきです。つまり、次の認証ラウンドが期待される場合です。
この値は、入力に適切な機能 (下記参照) が提供されていない限り、送信すべきではありません。この属性は、認証情報ヘルパーから Git (または
git
credential
を呼び出す他のプログラム) へ情報を渡すための一方向です。 wwwauth
[]-
Git が 1 つ以上の WWW-Authenticate 認証ヘッダーを含む HTTP レスポンスを受け取ると、これらは Git によって認証情報ヘルパーに渡されます。
各 WWW-Authenticate ヘッダー値は、多値属性 wwwauth[] として渡され、属性の順序は HTTP レスポンスに表示される順序と同じです。この属性は、Git から認証情報ヘルパーに追加情報を渡すための一方向です。
capability
[]-
これは、Git、または適切な場合、ヘルパーが対象の機能をサポートしていることを示します。これは、プロトコルの一部として、より優れた、より具体的なデータを提供するために使用できます。
capability
[] ディレクティブは、それに依存する値の前に置かれなければならず、これらのディレクティブはプロトコルでアナウンスされる最初の項目であるべきです。現在サポートされている機能は2つあります。1つ目は
authtype
で、これはauthtype
、credential
、およびephemeral
の値が理解されていることを示します。2つ目はstate
で、これはstate
[] およびcontinue
の値が理解されていることを示します。機能がサポートされているからといって、追加機能を使用する義務はありませんが、機能なしで提供すべきではありません。
認識されない属性と機能は、黙って破棄されます。
機能の入出力形式
git
credential
capability
の場合、形式は少し異なります。まず、プロトコルの現在のバージョンを示すために version
0
のアナウンスが行われ、次に各機能が capability
authtype
のような行でアナウンスされます。認証情報ヘルパーもこの形式を実装することができ、その場合も capability
引数を伴います。将来的には追加の行が追加される可能性があります。呼び出し元は、理解できない行を無視すべきです。
これは認証情報ヘルパープロトコルの新しい部分であるため、古いバージョンの Git や一部の認証情報ヘルパーはこれをサポートしていない可能性があります。ゼロ以外の終了ステータスが返された場合、または最初の行が単語 version
とスペースで始まらない場合、呼び出し元は機能がサポートされていないと仮定すべきです。
この形式の意図は、認証情報出力と明確に区別することです。常に同じ出力を生成する非常に単純な認証情報ヘルパー(インラインシェルスクリプトなど)を使用することは可能です。異なる形式を使用することで、ユーザーは機能の広告を正しく実装したり、機能を問い合わせる呼び出し元を誤って混乱させたりすることを心配せずに、この構文を使い続けることができます。
GIT
git[1]スイートの一部