セットアップと設定
プロジェクトの取得と作成
基本的なスナップショット
ブランチとマージ
プロジェクトの共有と更新
検査と比較
パッチ適用
デバッグ
メール
外部システム
サーバー管理
- 2.49.1 → 2.50.1 変更なし
-
2.49.0
2025-03-14
- 2.48.1 → 2.48.2 変更なし
-
2.48.0
2025-01-10
- 2.47.1 → 2.47.3 変更なし
-
2.47.0
2024-10-06
- 2.46.1 → 2.46.4 変更なし
-
2.46.0
2024-07-29
- 2.45.1 → 2.45.4 変更なし
-
2.45.0
2024-04-29
- 2.44.1 → 2.44.4 変更なし
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 変更なし
-
2.43.0
2023-11-20
- 2.41.1 → 2.42.4 変更なし
-
2.41.0
2023-06-01
- 2.38.1 → 2.40.4 変更なし
-
2.38.0
2022-10-02
- 2.36.1 → 2.37.7 変更なし
-
2.36.0
2022-04-18
- 2.35.1 → 2.35.8 変更なし
-
2.35.0
2022-01-24
- 2.32.1 → 2.34.8 変更なし
-
2.32.0
2021-06-06
- 2.30.2 → 2.31.8 変更なし
-
2.30.1
2021-02-08
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 変更なし
-
2.29.0
2020-10-19
- 2.28.1 変更なし
-
2.28.0
2020-07-27
- 2.27.1 変更なし
-
2.27.0
2020-06-01
- 2.25.1 → 2.26.3 変更なし
-
2.25.0
2020-01-13
- 2.23.1 → 2.24.4 変更なし
-
2.23.0
2019-08-16
- 2.22.2 → 2.22.5 変更なし
-
2.22.1
2019-08-11
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 変更なし
-
2.21.0
2019-02-24
- 2.18.1 → 2.20.5 変更なし
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 変更なし
-
2.16.6
2019-12-06
- 2.15.4 変更なし
-
2.14.6
2019-12-06
-
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.8.6
2017-07-30
-
2.7.6
2017-07-30
- 2.4.12 → 2.6.7 変更なし
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 変更なし
-
2.0.5
2014-12-17
概要
gitclone[--template=<template-directory>] [-l] [-s] [--no-hardlinks] [-q] [-n] [--bare] [--mirror] [-o<name>] [-b<name>] [-u<upload-pack>] [--reference<repository>] [--dissociate] [--separate-git-dir<git-dir>] [--depth<depth>] [--[no-]single-branch] [--[no-]tags] [--recurse-submodules[=<pathspec>]] [--[no-]shallow-submodules] [--[no-]remote-submodules] [--jobs<n>] [--sparse] [--[no-]reject-shallow] [--filter=<filter-spec>] [--also-filter-submodules]] [--] <repository> [<directory>]
説明
リポジトリを新規作成されたディレクトリにクローンし、クローンされたリポジトリ内の各ブランチに対してリモートトラッキングブランチを作成し (git branch --remotes を使用して表示可能)、クローンされたリポジトリの現在アクティブなブランチから分岐した初期ブランチを作成してチェックアウトします。
クローン後、引数なしの単純な git fetch はすべてのリモートトラッキングブランチを更新し、引数なしの git pull はさらにリモートのマスターブランチを現在のマスターブランチにマージします (もしあれば)。(--single-branch が指定されている場合、これは当てはまりません。下記を参照)。
このデフォルト構成は、refs/remotes/origin の下にリモートブランチヘッドへの参照を作成し、remote.origin.url および remote.origin.fetch 構成変数を初期化することによって実現されます。
オプション
-l--local-
クローン元のリポジトリがローカルマシン上にある場合、このフラグは通常の「Git 対応」転送メカニズムをバイパスし、
HEADおよび objects および refs ディレクトリ下のすべてのものをコピーすることによってリポジトリをクローンします。.git/objects/ディレクトリ下のファイルは、可能な場合はスペースを節約するためにハードリンクされます。リポジトリがローカルパスとして指定されている場合 (例:
/path/to/repo)、これがデフォルトであり、--localは基本的に何もしません。リポジトリが URL として指定されている場合、このフラグは無視されます (そしてローカル最適化は決して使用されません)。--no-localを指定すると、/path/to/repoが指定されている場合のデフォルトをオーバーライドし、代わりに通常の Git 転送を使用します。リポジトリの
$GIT_DIR/objectsにシンボリックリンクがある場合、またはそれがシンボリックリンクである場合、クローンは失敗します。これは、シンボリックリンクを逆参照することによるファイルの意図しないコピーを防ぐためのセキュリティ対策です。このオプションはセキュリティ上の理由から他のユーザーが所有するリポジトリでは機能せず、クローンを成功させるには
--no-localを指定する必要があります。注記: この操作は、<src> を変更中に
cp-r<src> <dst> を実行するのと同様に、ソースリポジトリへの同時変更と競合する可能性があります。 --no-hardlinks-
ローカルファイルシステム上のリポジトリからクローンする際に、ハードリンクを使用する代わりに
.git/objectsディレクトリ下のファイルを強制的にコピーします。これは、リポジトリのバックアップを作成しようとしている場合に望ましいかもしれません。 -s-
クローン元のリポジトリがローカルマシン上にある場合、ハードリンクを使用する代わりに、
.git/objects/info/alternatesを自動的に設定して、オブジェクトをソースリポジトリと共有します。結果として得られるリポジトリは、最初は独自のオブジェクトを持っていません。注記: これは危険な操作である可能性があります。何をするか理解していない限り、使用しないでください。このオプションを使用してリポジトリをクローンし、その後ソースリポジトリ内のブランチを削除したり (または既存のコミットが参照されなくなる他の Git コマンドを使用したり) すると、一部のオブジェクトが参照されなくなる (またはぶら下がる) 可能性があります。これらのオブジェクトは、自動的に
gitmaintenancerun--autoを呼び出す通常の Git 操作 (例:gitcommit) によって削除される可能性があります。(詳細については git-maintenance[1] を参照してください。) これらのオブジェクトが削除され、クローンされたリポジトリによって参照されていた場合、クローンされたリポジトリは破損します。--sharedでクローンされたリポジトリで--localオプションなしでgitrepackを実行すると、ソースリポジトリからクローンされたリポジトリのパックにオブジェクトがコピーされ、clone--sharedのディスクスペース節約効果が失われることに注意してください。ただし、デフォルトで--localオプションを使用するgitgcを実行するのは安全です。--sharedでクローンされたリポジトリのソースリポジトリへの依存関係を解除したい場合は、単純にgitrepack-aを実行して、すべてのオブジェクトをソースリポジトリからクローンされたリポジトリのパックにコピーすることができます。 --reference[-if-able] <repository>-
参照 <repository> がローカルマシン上にある場合、
.git/objects/info/alternatesを自動的に設定して、参照 <repository> からオブジェクトを取得します。既存のリポジトリを代替として使用すると、クローンされるリポジトリからコピーする必要のあるオブジェクトが少なくなり、ネットワークおよびローカルストレージのコストが削減されます。--reference-if-ableを使用する場合、存在しないディレクトリはクローンを中止する代わりに警告とともにスキップされます。注記:
--sharedオプションの注記、および--dissociateオプションも参照してください。 --dissociate-
--referenceオプションで指定された参照リポジトリからオブジェクトを借用してネットワーク転送を削減するのみで、借用されたオブジェクトの必要なローカルコピーを作成した後は、それらからの借用を停止します。このオプションは、すでに他のリポジトリからオブジェクトを借用しているリポジトリからローカルにクローンする場合にも使用できます。新しいリポジトリは同じリポジトリからオブジェクトを借用し、このオプションを使用して借用を停止できます。 -q--quiet-
静かに操作します。進行状況は標準エラー出力に報告されません。
-v--verbose-
詳細に実行します。標準エラー出力への進行状況の報告には影響しません。
--progress-
標準エラー出力が端末に接続されている場合、デフォルトでは進行状況が報告されますが、
--quietが指定されている場合は除きます。このフラグは、標準エラー出力が端末にリダイレクトされていない場合でも進行状況を強制的に表示します。 --server-option=<option>-
プロトコルバージョン2を使用して通信する際に、指定された文字列をサーバーに送信します。指定された文字列には、NULまたはLF文字を含めてはなりません。未知のサーバーオプションを含むサーバーオプションの処理は、サーバー固有です。複数の
--server-option=<option> が指定されている場合、それらはすべてコマンドラインでリストされている順序で相手側に送信されます。コマンドラインから--server-option=<option> が指定されていない場合、代わりに構成変数remote.<name>.serverOptionの値が使用されます。 -n--no-checkout-
クローン完了後、
HEADのチェックアウトは実行されません。 --[no-]reject-shallow-
ソースリポジトリがシャローリポジトリの場合、失敗します。
clone.rejectShallow構成変数を使用してデフォルトを指定できます。 --bare-
ベア Git リポジトリを作成します。つまり、<directory> を作成して管理ファイルを <directory>
/.gitに配置する代わりに、<directory> 自体を$GIT_DIRにします。これにより、作業ツリーをチェックアウトする場所がないため、当然--no-checkoutが暗黙的に指定されます。また、リモートのブランチヘッドは、refs/remotes/origin/にマッピングされることなく、対応するローカルブランチヘッドに直接コピーされます。このオプションを使用する場合、リモートトラッキングブランチも関連する構成変数も作成されません。 --sparse-
スパースチェックアウトを使用し、最初はトップレベルディレクトリ内のファイルのみが存在します。git-sparse-checkout[1] コマンドを使用して、必要に応じて作業ディレクトリを拡張できます。
--filter=<filter-spec>-
部分クローン機能を使用し、指定されたオブジェクトフィルターに従って到達可能なオブジェクトのサブセットをサーバーに要求します。
--filterを使用する場合、提供された <filter-spec> が部分クローンフィルターに使用されます。たとえば、--filter=blob:noneは、Git で必要になるまですべてのブロブ (ファイルコンテンツ) をフィルターで除外します。また、--filter=blob:limit=<size> は、サイズが少なくとも <size> のすべてのブロブをフィルターで除外します。フィルター仕様の詳細については、git-rev-list[1] の--filterオプションを参照してください。 --also-filter-submodules-
リポジトリ内のすべてのサブモジュールにも部分クローンフィルターを適用します。
--filterおよび--recurse-submodulesが必要です。これはclone.filterSubmodules構成オプションを設定することでデフォルトで有効にできます。 --mirror-
ソースリポジトリのミラーをセットアップします。これは
--bareを意味します。--bareと比較して、--mirrorはソースのローカルブランチをターゲットのローカルブランチにマップするだけでなく、すべての参照 (リモートトラッキングブランチ、ノートなどを含む) をマップし、ターゲットリポジトリでgitremoteupdateによってこれらの参照がすべて上書きされるように refspec 構成を設定します。 -o<name>--origin<name>-
上流リポジトリを追跡するためにリモート名
originを使用する代わりに、<name> を使用します。config のclone.defaultRemoteNameを上書きします。 -b<name>--branch<name>-
新しく作成された
HEADをクローンされたリポジトリのHEADが指すブランチにポイントする代わりに、<name> ブランチにポイントします。非ベアリポジトリでは、これがチェックアウトされるブランチになります。--branchはタグも受け入れ、結果のリポジトリでそのコミットにHEADをデタッチします。 --revision=<rev>-
新しいリポジトリを作成し、指定されたリビジョン <rev> までの履歴をフェッチし (それ以外は何もフェッチせず)、リモートトラッキングブランチもローカルブランチも作成せずに、
HEADを <rev> にデタッチします。引数は、コミットに剥がれる参照名 (例:refs/heads/mainまたはrefs/tags/v1.0) または16進オブジェクト名にすることができます。このオプションは--branchおよび--mirrorと互換性がありません。 -u<upload-pack>--upload-pack<upload-pack>-
指定された場合、クローン元のリポジトリが ssh を介してアクセスされるときに、他方の側で実行されるコマンドのデフォルト以外のパスを指定します。
--template=<template-directory>-
テンプレートが使用されるディレクトリを指定します。(詳細については git-init[1] の「テンプレートディレクトリ」セクションを参照してください。)
-c<key>=<value>--config<key>=<value>-
新しく作成されたリポジトリに構成変数を設定します。これはリポジトリが初期化された直後、ただしリモート履歴がフェッチされたりファイルがチェックアウトされたりする前に有効になります。<key> は git-config[1] が期待するのと同じ形式です (例:
core.eol=true)。同じキーに複数の値が指定された場合、各値は構成ファイルに書き込まれます。これにより、たとえば、origin リモートにさらにフェッチ refspec を追加しても安全です。現在の実装の制限により、一部の構成変数は最初のフェッチとチェックアウトが完了するまで有効になりません。有効にならないことがわかっている構成変数は、
remote.<name>.mirrorおよびremote.<name>.tagOptです。代わりに、対応する--mirrorおよび--no-tagsオプションを使用してください。 --depth<depth>-
指定されたコミット数に履歴が切り詰められた「シャロー」クローンを作成します。
--no-single-branchが指定されていない限り、--single-branchが暗黙的に指定され、すべてのブランチの先端近くの履歴をフェッチします。サブモジュールをシャローにクローンしたい場合は、--shallow-submodulesも渡します。 --shallow-since=<date>-
指定された時間以降の履歴を持つシャロークローンを作成します。
--shallow-exclude=<ref>-
指定されたリモートブランチまたはタグから到達可能なコミットを除外して、履歴を持つシャロークローンを作成します。このオプションは複数回指定できます。
--[no-]single-branch-
--branchオプションで指定された単一のブランチ、またはリモートのプライマリブランチのHEADが指すブランチの先端までの履歴のみをクローンします。結果のリポジトリへの今後のフェッチは、最初のクローニングにこのオプションが使用されたブランチのリモートトラッキングブランチのみを更新します。--single-branchクローンが作成されたときにリモートのHEADがどのブランチも指していなかった場合、リモートトラッキングブランチは作成されません。 --[no-]tags-
タグをクローンするかどうかを制御します。
--no-tagsが指定された場合、オプションはremote.<remote>.tagOpt=--no-tags構成を設定することで永続化されます。これにより、将来のgitpullおよびgitfetchがタグを追跡しなくなります。その後の明示的なタグのフェッチは引き続き機能します (詳細については git-fetch[1] を参照してください)。デフォルトではタグはクローンされるため、通常
--tagsを渡しても何もしません。ただし、以前の--no-tagsを打ち消す場合は別です。--single-branchと組み合わせて、単一のクローンされたブランチ以外の参照を持たないブランチをクローンして維持するために使用できます。これは、たとえば、検索インデックス作成のために一部のリポジトリのデフォルトブランチの最小クローンを維持する場合に便利です。 --recurse-submodules[=<pathspec>]-
クローンが作成された後、提供された <pathspec> に基づいてサブモジュールを初期化してクローンします。
=<pathspec> が提供されていない場合、すべてのサブモジュールが初期化され、クローンされます。このオプションは、複数のエントリからなるパススペックに対して複数回指定できます。結果として得られるクローンは、提供されたパススペックにsubmodule.activeが設定されます。パススペックが提供されていない場合は「.」(すべてのサブモジュールを意味する) に設定されます。サブモジュールはデフォルト設定を使用して初期化およびクローンされます。これは、クローン完了直後に
gitsubmoduleupdate--init--recursive<pathspec> を実行するのと同等です。このオプションは、クローンされたリポジトリに作業ツリー/チェックアウトがない場合 (つまり、--no-checkout/-n、--bare、または--mirrorのいずれかが指定されている場合) は無視されます。 --[no-]shallow-submodules-
クローンされるすべてのサブモジュールは、深さ1のシャロークローンになります。
--[no-]remote-submodules-
クローンされるすべてのサブモジュールは、スーパープロジェクトに記録された SHA-1 の代わりに、サブモジュールのリモートトラッキングブランチの状態を使用してサブモジュールを更新します。
gitsubmoduleupdateに--remoteを渡すのと同等です。 --separate-git-dir=<git-dir>-
クローンされたリポジトリを本来あるべき場所に配置する代わりに、指定されたディレクトリに配置し、そこにファイルシステムに依存しない Git シンボリックリンクを作成します。結果として、Git リポジトリを作業ツリーから分離することができます。
--ref-format=<ref-format>-
リポジトリの指定された参照ストレージ形式を指定します。有効な値は次のとおりです。
-
filesは、packed-refs を使用するルーズファイル用です。これがデフォルトです。 -
reftableは reftable 形式用です。この形式は実験的であり、内部は変更される可能性があります。
-
-j<n>--jobs<n>-
同時にフェッチされるサブモジュールの数。
submodule.fetchJobsオプションにデフォルト設定されます。 - <repository>
-
クローン元となる (リモートの可能性もある) <repository>。リポジトリの指定方法の詳細については、以下の GIT URL セクションを参照してください。
- <directory>
-
クローン先の新しいディレクトリの名前。<directory> が明示的に指定されていない場合、ソースリポジトリの「人間的な」部分が使用されます (例:
/path/to/repo.gitの場合はrepo、host.xz:foo/.gitの場合はfoo)。既存のディレクトリへのクローンは、そのディレクトリが空の場合にのみ許可されます。 --bundle-uri=<uri>-
リモートからフェッチする前に、指定された <uri> からバンドルをフェッチし、そのデータをローカルリポジトリにアンバンドルします。バンドル内の参照は、非表示の
refs/bundle/*名前空間に格納されます。このオプションは、--depth、--shallow-since、および--shallow-excludeと互換性がありません。
GIT URL
一般に、URLには、転送プロトコル、リモートサーバーのアドレス、およびリポジトリへのパスに関する情報が含まれます。転送プロトコルによっては、この情報の一部が存在しない場合があります。
Gitはssh、git、http、およびhttpsプロトコルをサポートしています (さらに、ftpおよびftpsはフェッチに使用できますが、これは非効率的で非推奨です。使用しないでください)。
ネイティブ転送 (つまり git:// URL) は認証を行わず、安全でないネットワークでは注意して使用する必要があります。
以下の構文がそれらと一緒に使用できます。
-
ssh://[<user>@]<host>[:<port>]/<path-to-git-repo> -
git://<host>[:<port>]/<path-to-git-repo> -
http[s]://<host>[:<port>]/<path-to-git-repo> -
ftp[s]://<host>[:<port>]/<path-to-git-repo>
scpのような代替構文もsshプロトコルで使用できます
-
[<user>
@]<host>:/<path-to-git-repo>
この構文は、最初のコロンの前にスラッシュがない場合にのみ認識されます。これにより、コロンを含むローカルパスとの区別が容易になります。たとえば、ローカルパス foo:bar は、ssh URLと誤解されるのを避けるために絶対パスまたは ./foo:bar として指定できます。
sshおよびgitプロトコルは、~<username> 展開もサポートしています。
-
ssh://[<user>@]<host>[:<port>]/~<user>/<path-to-git-repo> -
git://<host>[:<port>]/~<user>/<path-to-git-repo> -
[<user>
@]<host>:~<user>/<path-to-git-repo>
Gitがネイティブにサポートしているローカルリポジトリの場合、以下の構文が使用できます。
-
/path/to/repo.git/ -
file:///path/to/repo.git/
この2つの構文はほとんど同じですが、前者は --local オプションを暗黙的に指定します。
git clone、git fetch、および git pull は、適切なバンドルファイルも受け入れますが、git push は受け入れません。git-bundle[1] を参照してください。
Gitが特定の転送プロトコルを処理する方法を知らない場合、存在する場合は remote-<transport> リモートヘルパーを使用しようとします。リモートヘルパーを明示的に要求するには、次の構文を使用できます。
-
<transport>
::<address>
ここで <address> は、特定の呼び出されるリモートヘルパーによって認識されるパス、サーバーとパス、または任意のURLのような文字列である場合があります。詳細については gitremote-helpers[7] を参照してください。
同様の名前のリモートリポジトリが多数あり、それらに対して異なる形式を使用したい場合 (使用するURLが機能するURLに書き換えられるように)、次の形式の構成セクションを作成できます。
[url "<actual-url-base>"] insteadOf = <other-url-base>
例えば、これにより
[url "git://git.host.xz/"] insteadOf = host.xz:/path/to/ insteadOf = work:
"work:repo.git" や "host.xz:/path/to/repo.git" のような URL は、URL を受け入れるすべてのコンテキストで "git://git.host.xz/repo.git" に書き換えられます。
プッシュ専用にURLを書き換えたい場合は、次の形式の構成セクションを作成できます。
[url "<actual-url-base>"] pushInsteadOf = <other-url-base>
例えば、これにより
[url "ssh://example.org/"] pushInsteadOf = git://example.org/
"git://example.org/path/to/repo.git" のような URL は、プッシュ時には "ssh://example.org/path/to/repo.git" に書き換えられますが、プル時には元の URL が引き続き使用されます。
例
-
アップストリームからクローンする
$ git clone git://git.kernel.org/pub/scm/.../linux.git my-linux $ cd my-linux $ make
-
現在のディレクトリから借用して、何もチェックアウトせずにローカルクローンを作成する
$ git clone -l -s -n . ../copy $ cd ../copy $ git show-branch
-
既存のローカルディレクトリから借用しながらアップストリームからクローンする
$ git clone --reference /git/linux.git \ git://git.kernel.org/pub/scm/.../linux.git \ my-linux $ cd my-linux
-
変更を公開するためにベアリポジトリを作成する
$ git clone --bare -l /home/proj/.git /pub/scm/proj.git
-
異なるユーザーからローカルリポジトリをクローンする
$ git clone --no-local /home/otheruser/proj.git /pub/scm/proj.git
設定
このセクションのこの行より下のすべての内容は、git-config[1] ドキュメントから選択的に含まれています。内容はそちらで見られるものと同じです。
init.templateDir-
テンプレートがコピーされるディレクトリを指定します。(詳細については git-init[1] の「テンプレートディレクトリ」セクションを参照してください。)
init.defaultBranch-
新しいリポジトリを初期化する際などに、デフォルトのブランチ名を上書きすることを許可します。
init.defaultObjectFormat-
新しいリポジトリのデフォルトのオブジェクト形式を上書きすることを許可します。git-init[1] の
--object-format=を参照してください。コマンドラインオプションとGIT_DEFAULT_HASH環境変数の両方がこの設定よりも優先されます。 init.defaultRefFormat-
新しいリポジトリのデフォルトの参照ストレージ形式を上書きすることを許可します。git-init[1] の
--ref-format=を参照してください。コマンドラインオプションとGIT_DEFAULT_REF_FORMAT環境変数の両方がこの設定よりも優先されます。 clone.defaultRemoteName-
リポジトリをクローンするときに作成するリモートの名前。デフォルトは
originです。--originコマンドラインオプションを渡すことで上書きできます。 clone.rejectShallow-
シャローリポジトリである場合、リポジトリのクローンを拒否します。これはコマンドラインで
--reject-shallowオプションを渡すことで上書きできます。 clone.filterSubmodules-
部分クローンフィルターが提供され (git-rev-list[1] の
--filterを参照)、--recurse-submodulesが使用されている場合、サブモジュールにもフィルターを適用します。
GIT
git[1]スイートの一部