Gitの既存リポジトリを使って開発を始めるにあたって、皆さんまずはリポジトリを複製しますよね?
本投稿では、git clone
コマンドの基本的な使い方〜便利なオプションの紹介をさせていただきます。
Gitを使い始めたばかりの方から、オプションは使用していなかった!という玄人の方まで、開発する際の参考にしていだければ幸いです。
弊社ブログのGitに関わる関連記事もぜご一読ください!
- 【超入門】初心者のためのGitとGitHubの使い方
- 【Git入門】git stashで作業を便利に退避する
- 【Git入門】git commitを取り消したい、元に戻す方法まとめ
目次
git clone
って?
git clone
とは、既存のリポジトリをローカル環境に複製するコマンドのことです。
リポジトリの場所はリモートでもローカルでも構いません。
Gitではソースコードだけでなく、
等、開発に使用するための様々なファイルを格納することが可能です。
ER図、UML図等はGitHubやGitLab上で描画できるので、ソースコード以外でバージョン管理したいファイルも全て集約することができますね。
git clone
の基本的な使い方
$ git clone [リポジトリパス]
上記コマンドにより、指定したリポジトリをカレントディレクトリに複製することができます。
指定がない場合はリポジトリの名前のままでローカルに保存されます。
GitHubのリポジトリを指定した際の使用例を以下に記します。
$ git clone https://github.com/[ユーザー名]/[リポジトリ名].git
privateリポジトリの場合は、git clone
時にパスワード認証かSSH公開鍵の設定が必要となります。
別名で保存したい場合
ローカルに保存する際に別名を指定したい場合は、下記のようにディレクトリ名をパスの後ろに記載します。
$ git clone [リポジトリパス] [ディレクトリ名]
ディレクトリ名が更新されるだけで、リポジトリの内容は変わりません。
カレントディレクトリ以外に保存したい場合
指定がない場合はカレントディレクトリに保存されますが、別ディレクトリの指定も可能です。
$ git clone [リポジトリパス] [パス]/[ディレクトリ名]
git clone
のオプション紹介
git clone
コマンドには様々なオプションがあります。
オプションは以下コマンドで参照可能です。
$ git help clone
コマンドを実行すると、以下のような結果が出力されます。
NAME git-clone - Clone a repository into a new directory SYNOPSIS git clone [--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] [--filter=<filter>] [--] <repository> [<directory>] DESCRIPTION Clones a repository into a newly created directory, creates remote-tracking branches for each branch in the cloned repository (visible using git branch --remotes), and creates and checks out an initial branch that is forked from the cloned repository’s currently active branch. (中略) OPTIONS -l, --local When the repository to clone from is on a local machine, this flag bypasses the normal "Git aware" transport mechanism and clones the repository by making a copy of HEAD and everything under objects and refs directories. The files under .git/objects/ directory are hardlinked to save space when possible. (後略)
コマンドの使い方とオプションに関する説明が詳細に出力されます。
英語が堪能な方はこちらの公式ヘルプだけでなんとでもなりそうですね。
本投稿ではこのオプション群の中からいくつかを抜粋して紹介させていただきます。
オプション | ショートオプション | 用途 |
---|---|---|
--branch | -b | クローンしたいブランチを指定する |
--quiet | -q | クローン時のメッセージを非表示にする |
--origin | -o | origin に別名を付ける |
--depth | 指定数のコミットのみを取得する | |
--no-checkout | -n | チェックアウトを行わない |
※以降の例ではショートオプションをしています。
クローンしたいブランチを指定する
git clone
コマンドは指定がない場合main
ブランチを取得しますが、特定のブランチを指定したい場合は-b
オプションを使用します。
$ git clone -b [指定したいブランチ名] [リポジトリパス]
クローンされたリポジトリでgit branch
コマンドを実行すると、指定したブランチ名で複製されていることが確認できます。
また、ブランチ名の代わりにタグを指定することも可能です。
クローン時のメッセージを非表示にする
git clone
コマンドはデフォルトで下記のような進捗状況が出力されるようになっています。
(--progress
オプションと同様の動きをします。)
Cloning into 'XXXXX'... remote: Enumerating objects: XXX, done. remote: Counting objects: 100% (XX/XX), done. remote: Compressing objects: 100% (XX/XX), done. remote: Total XXX (delta X), reused XXX (delta X), pack-reused XXXX Receiving objects: 100% (XXX/XXX), XX MiB | XX MiB/s, done. Resolving deltas: 100% (XXX/XXX), done.
この進捗状況を非表示にする際には-q
オプションを使用します。
$ git clone -q [リポジトリパス]
origin
に別名を付ける
リモートリポジトリからgit clone
をする場合、デフォルトのリポジトリ名であるorigin
がクローンされます。
#オプション無しで実行した場合 git branch -a * main remotes/origin/HEAD -> origin/main remotes/origin/feature/hogehoge
-o
オプションを使用することで、origin
以外の名前を指定することができます。
(origin
とはリモートリポジトリのアクセス先に対してデフォルトで付く名称です。)
$ git clone -o [指定したいorigin以外の名前] [リポジトリパス]
確認すると、指定した名前でクローンできていることが分かります。
#オプション有りで実行した場合(例では「target」と呼称) git branch -a * main remotes/target/HEAD -> target/main remotes/target/feat/hogehoge
また、下記例のようにgit remote
コマンドでもアクセス先を確認することができます。
$ git remote -v
指定数のコミットのみを取得する
開発が進んでくるとgit clone
をするだけで、数分を要するようなリポジトリも出てくると思います。
特定のブランチを指定するオプションも先ほどご紹介しましたが、さらにコミット数を指定することも可能です。
過去分のコミットが不要な場合は、このオプションを使用することで軽量にクローンすることができます。
$ git clone --depth=1 [リポジトリパス] [ブランチ名]
例では「1」を指定して、最新のコミットのみを取得対象としています。
ブランチを指定しない場合は、デフォルトブランチが取得対象となります。
チェックアウトを行わない
git clone
をデフォルトで実行すると自動的にチェックアウトが行われますが、チェックアウトを行わないことでクローン時のサイズを抑えることができます。
$ git clone --no-checkout [リポジトリパス]
チェックアウトが実行されないので、クローン後のディレクトリには.git
のみが作成されます。
$ ls -a . .. .git
ちなみに、この空っぽの状態から特定のディレクトリをチェックアウトするには、sparse-checkout
コマンドを使用します。
$ git sparse-checkout init $ git checkout Your branch is up to date with 'origin/main'.
まとめ
Git入門ということで、git clone
コマンドの使い方と一部オプションをご紹介しました。
git clone
は開発初期に一度実行するきりで使用頻度はあまり高くないと思いますが、オプションを組み合わせることでローカルのサイズを抑えたりデフォルトでは実現できない特別な使い方が可能になるので、よろしかったら参考にしてください。
エンジニア中途採用サイト
ラクスでは、エンジニア・デザイナーの中途採用を積極的に行っております!
ご興味ありましたら是非ご確認をお願いします。
https://career-recruit.rakus.co.jp/career_engineer/カジュアル面談お申込みフォーム
どの職種に応募すれば良いかわからないという方は、カジュアル面談も随時行っております。
以下フォームよりお申込みください。
https://rakus.hubspotpagebuilder.com/visit_engineer/rakus.hubspotpagebuilder.comラクスDevelopers登録フォーム
https://career-recruit.rakus.co.jp/career_engineer/form_rakusdev/イベント情報
会社の雰囲気を知りたい方は、毎週開催しているイベントにご参加ください!
◆TECH PLAY
techplay.jp
◆connpass
rakus.connpass.com