clone と tag

INPUT · スライド

repository の複製と release tag(clone / remote / tag)

01 / 08

現場での開発開始(repository の clone)

これまでの章では主に git init で新規 repository を作成してきました。

しかし、実際の企業やチーム開発において git init を実行する機会はそれほど多くありません。通常は GitHub 等にすでに存在するプロジェクトを自分の local 環境へ複製(clone)して開発をスタートします。

この章で学ぶ主要なコマンドは以下の3つです。

  • git clone … remote repository の全履歴とファイルをまるごと local へ複製する
  • git remote add … local repository に remote repository の URL を紐付ける
  • git tag … リリースした特定 commit に「v1.0」などの固定目印を付与する

02 / 08

git clone — repository をまるごと複製して始める

git clone <リポジトリURL> を実行すると、プロジェクトの全 commit 履歴・全 branch・全ファイルが local にダウンロードされます。

最新のファイル状態だけが落ちてくるのではなく、過去の commit 履歴もすべて複製されるため、clone 直後から git log や git diff を完全に利用できます。

さらに、clone 元の URL が自動的に origin という remote 名で登録されるため、最初から git push や git pull を実行可能です。

$ git clone https://example.com/team/project.gitCloning into 'project'...remote: Enumerating objects: 3, done.Receiving objects: 100% (3/3), done.

03 / 08

clone と init の違い

2つのコマンドの違いは、開始時点で過去の commit 履歴や remote 設定が存在するかどうかだけです。

  • git init … 空のディレクトリでゼロから repository を作成(履歴なし・remote 設定なし)
  • git clone … remote repository から全履歴を複製して開始(全履歴あり・origin 設定済み)

開発が始まってからの操作(add, commit, push, pull, branch)はどちらも全く同一です。

04 / 08

remote repository の登録(git remote add)

自分で git init して新しく作成した local repository には、初期状態では push 先の remote repository が設定されていません。そのまま git push を実行してもエラーになります。

git remote add <名前> <URL> を実行して、remote repository を登録します。

git remote add origin https://example.com/you/mine.git

登録後は、長い URL の代わりに origin という短縮名で remote repository を指定できるようになります。

$ git pushfatal: 'origin' does not appear to be a git repository

05 / 08

origin とは何か?(慣習的な remote の別名)

これまで頻繁に登場した origin は、Git の予約語や特殊な構文ではありません。

git clone がデフォルトで設定する、remote repository の単なる登録名(alias)です。メイン branch を main と呼ぶのと同様に、主要な remote repository を origin と呼ぶのが世界的な業界慣習となっています。

現在登録されている remote repository の一覧と URL は、git remote -v で確認できます。

$ git remote -vorigin	https://example.com/you/mine.git (fetch)origin	https://example.com/you/mine.git (push)

06 / 08

git tag — 特定 commit への固定ラベル(release tag)

git tag は、特定の重要な commit に対して固定のバージョン名(目印)を付与するコマンドです。

git tag v1.0

引数を省略した場合は現在の HEAD commit に tag が付きます。過去の commit に付けたい場合は git tag v1.0 HEAD~2 や commit hash を指定します。

主に「v1.0.0 を本番リリースした時点」など、後から振り返る必要のある重要なマイルストーンに付与されます。

$ git tag v1.0$ git log --oneline9f2a1c4 (HEAD -> main, tag: v1.0) 初回リリース3b7e5d1 土台を作成

07 / 08

branch と tag の違い(動くポインタと動かないラベル)

branch も tag も「commit を指し示すポインタ」ですが、決定的な違いがあります。

  • branch(動く) … 新しい commit を作成するたびに、先端ポインタが自動的に前へ進む
  • tag(動かない) … 一度付与した commit から永久に動かない

tag は決して動かないため、「リリース時の状態を完全に再現したい」という場合に git reset --hard v1.0 や git switch v1.0 で確実にその時点へ復帰できます。

08 / 08

Git の全体像(総括)

ここまでの学習で、Git の必須コマンドの全体像が揃いました。

  • 記録する … init / add / commit
  • 分岐・統合する … branch / switch / merge
  • チームで共有する … push / fetch / pull
  • 変更を提案する … Pull Request(PR) / code review
  • やり直す … restore / reset / revert / commit --amend
  • 一時退避・除外する … stash / .gitignore
  • 履歴・差分を読む … log / show / diff / blame
  • 開始・目印をつける … clone / remote / tag

Git の核心は「working tree」「stage」「repository」の3つの領域モデルです。困ったときは git status で自分の変更がどこにあるかを確認しましょう。