はじめに

クローン

新しいリポジトリ → クローン、または ⌘K → クローン。URL を貼り付けるか、 GitHub、GitLab、Bitbucket、Azure DevOps にサインインして自分のリポジトリから選び ます。選んだ プロファイル のトークンはクローンに使われたあと破棄され、 .git/config に書き込まれることはありません。

親フォルダと名前を選ぶと、入力欄の下の行がリポジトリの着地点を正確に示します。すでに 存在するフォルダは、中に混ぜ込むのではなく拒否します。

詳細設定 — クローンを絞り込む

詳細設定 の中身はすべて既定でオフです。触らなければ、ふつうの完全なクローンに なります。ここが効いてくるのは、「完全」が 20 分と数ギガバイトを意味するような リポジトリです。

詳細設定を開いたクローンのダイアログ。部分クローン、シャロークローン、単一ブランチ、サブモジュール、ブランチ選択

選択肢 git が何をするか 代償
部分クローン --filter=blob:none 履歴は完全で、ファイルの中身だけがありません。blob は必要になった時点で届くので、古いファイルを開くにはネットワークが要ります。
シャロークローン --depth=N 最新の N 個のコミットしか存在しません。blame、log、bisect、range-diff はその切り口で止まります。
1 つのブランチだけ --single-branch ほかのブランチは、フェッチするまでリモートに残ります。
サブモジュールもクローン --recurse-submodules すべてのサブモジュールもチェックアウトされます。いま時間がかかる代わりに、あとでディレクトリが空という事態になりません。
チェックアウトするブランチ --branch <name> リモートの既定ブランチではなく、指定したブランチから始まります。

シャローより先に部分クローンを。 部分クローンはすべてのコミットを保持するので、 履歴は検索できるままで、遅延して取得されるのはファイルの中身だけです。シャロー クローンは実際に履歴を捨てます。git log は切り口で終わり、blame はその先を見られ ません。モノレポをクローンして作業するなら、たいてい欲しいのは部分クローンのほうです。

シャローは取り消せます。ターミナル で git fetch --unshallow を 実行すれば履歴が埋め戻されます。

ブランチを選ぶ

ブランチ名を打つか、ブランチを一覧 を押してリモートに何があるかを尋ね (git ls-remote --heads)、ドロップダウンから選びます。ネットワークへの往復は 1 回 だけで、それもボタンを押したときだけです。入力中に問い合わせが走ることはありません。

一覧の取得に失敗したら — トークンのないプライベート URL、打ち間違い、ネットワーク なし — 入力欄はただのテキストボックスのままで、クローン自体が本当のエラーを報告します。

フラグについて 2 つ

  • --depth は --single-branch を含みます。 シャロークローンでは、1 つの ブランチだけ のチェックを外すことが、ほかのブランチも取り戻せという要求 (--no-single-branch)になります。だから下のヒントの文言が変わります。
  • ローカルのフォルダをクローン する場合、git はフェッチせずにオブジェクトストアを ハードリンクするため、通常は --depth を完全に無視します。ローカルリポジトリの シャローコピーを求めたとき、Gitcito は file:// URL 経由でクローンするので、 指定した深さがそのまま得られます。

進捗

バーは git が報告するものをそのまま報告します。数える、圧縮する、受け取る、解決する、 チェックアウトする。総数を報告できない段階では、偽のパーセンテージではなく不定の バーを表示します。

新しいリポジトリはタブで開き、クローンに使ったプロファイルに紐づきます。

この翻訳を GitHub で改善