🐧 Linux 総合学習プラットフォーム
Git バージョン管理 ・ 入門

リポジトリを作る(init / clone)

Gitはファイルの変更履歴を記録するバージョン管理ツールです。記録の入れ物を「リポジトリ」と呼び、新規に作るときは git init、既存のものを手元に複製するときは git clone を使います。init を実行すると、その場所に隠しフォルダ .git ができ、そこに履歴がすべて保存されます。まずはこの「履歴の箱」を用意するところから始めます。

Git は、ファイルの変更履歴を安全に記録して、いつでも過去に戻れるようにする仕組みだ。こういう仕組みをバージョン管理と呼び、その代表が Git になる。

履歴を残したいとき、多くの人は report.txt・report_最新.txt・report_これ_本当に最終.txt のようにコピーを増やしていく。だが、この方法はすぐに破綻する。どれが最新か分からなくなり、誰がどこを変えたのかもたどれなくなるからだ。

Git はこれを一掃する。変更を記録するたびに、その瞬間のプロジェクト全体の姿を写真のように丸ごと保存する。だから過去の任意の地点をまるごと取り出せるし、いつ・誰が・なぜ変えたのかも後から追える。

💡
ポイントGit は変更のたびにプロジェクト全体を写真のように丸ごと保存する。だから過去のどの地点へもまるごと戻れる。
🔗
たとえファイルのコピーを増やす方式は、机に「最終」「本当に最終」の書類が積み上がる状態。Git は1冊のアルバムに時系列で写真を貼っていくイメージだ。

最初の一歩は、この履歴を保存するための入れ物を用意することだ。

📦 リポジトリという入れ物

Git が履歴を保存する入れ物を、リポジトリ(git-repository)と呼ぶ。

リポジトリの正体は、プロジェクトのフォルダの中に作られる .git という隠しフォルダだ。ここに過去のすべての記録が収まっている。つまり .git があるフォルダが「Git で管理されている場所」であり、この .git を消すと履歴もまるごと失われる。

入れ物を手に入れる方法は、大きく2つある。何もない新しいフォルダを管理対象にする git init と、すでにどこかにあるリポジトリを丸ごと手元へ複製する git clone だ。

まっさらなフォルダgit init既存リポジトリを複製git cloneリポジトリ.git があるフォルダ過去の記録を全部保存・取り出せる

これから自分で始めるなら init、既存のプロジェクトに参加するなら clone、と覚えると迷わない。

🆕 まっさらから始めるなら git init

手元のフォルダを新たに Git の管理下に置くには、そのフォルダの中で git init を実行するだけだ。

実際の流れはこうなる。mkdir myproject でフォルダを作り、cd myproject で中へ入り、そこで git init と打つ。すると「Initialized empty Git repository in /home/user01/myproject/.git/」のようなメッセージが出て、隠しフォルダ .git が作られる。

mkdir myproject → cd myproject → git init ……空っぽのリポジトリが1つできる。ls -a で .git が見えれば成功。

本当にできたかは ls -a(隠しファイルも表示するオプション付きの一覧)で確認できる。. と .. に並んで .git が見えれば成功だ。

この時点では履歴はまだ空で、これから記録を積んでいく「空っぽの箱」が用意された状態である。

✍ 名前とメールを一度だけ登録する

init した直後、記録を始める前に一度だけ済ませておきたい準備がある。コミット(記録)に「誰が記録したか」を刻むための、名前とメールの登録だ。

git config --global user.name 'Taro Yamada' と git config --global user.email 'taro@example.com' の2つを実行しておく。--global はこのマシンの自分のアカウント全体に共通で効かせる指定で、リポジトリを作るたびに毎回設定し直す必要はない。

git config --global user.name 'Taro Yamada' と git config --global user.email 'taro@example.com' ……コミットに刻む名前とメールを登録する。

あわせて git config --global init.defaultBranch main としておくと、新しく作るリポジトリの最初のブランチ名が main になる。

コツgit config --global user.name のように値を付けずに打つと、いまの設定値を確認できる。config は設定しても何も表示されない。

config は設定しても何も表示されない。git config --global user.name のように値を付けずに打つと、いまの設定値を確認できる。

この名前とメールは表示用の文字列で、本人確認に使われるわけではない。ただ、後でチームと共有するなら実際に使うメールアドレスにしておくと、誰のコミットかが正しく結び付く。

そもそも Git がまだ入っていない環境では、RHEL 系なら sudo dnf install git で導入する。git --version でバージョンが表示されれば準備完了だ。

📥 既にあるものを引き継ぐなら git clone

他の人が作ったリポジトリや、GitHub などのサーバー上にあるリポジトリを手元へ持ってくるには、git clone(git-clone)を使う。

書式は git clone <URL> だ。たとえば git clone https://github.com/taro/sample.git と打つと、その内容が過去の履歴ごと sample という同名フォルダに複製される。

git clone https://github.com/taro/sample.git ……履歴ごと sample フォルダに複製され、複製元が origin として自動登録される。

clone のうれしい点は2つある。履歴が丸ごとコピーされること。そして、複製元が origin という名前の「送り先」として自動で登録されることだ。これにより、あとで変更を送り返したり最新を取り込んだりがすぐにできる。

複製が終わったら cd sample で中に入る。その瞬間から過去のコミットもすべて使える状態になる。新しくプロジェクトへ参加するときの、まさに最初の一手だ。

⚠ どこでつまずくのか

初学者がよくやる失敗を、先回りして潰しておく。

一つは、すでに Git 管理下にあるフォルダの中で、さらに git init を重ねて打ってしまうことだ。既存の .git があるフォルダで init してもエラーにはならないが、混乱のもとになる。まずは git status を打って「ここはもう Git 管理下かどうか」を確かめる癖をつけよう。

つまずきclone はカレントディレクトリの直下に新しいフォルダを作る。実行前に pwd で現在地を確かめると、思わぬ場所に展開する事故を防げる。

もう一つの典型は、clone する場所を意識せず、いま自分がいるフォルダの中にどんどん複製してしまうことだ。clone はカレントディレクトリの直下に新しいフォルダを作る。実行前に pwd で現在地を確認しておくと、思わぬ場所に展開する事故を防げる。

🚫 .git は手で触らない

もう一つ、絶対に触ってはいけない場所がある。.git フォルダだ。手で開いたり中身を編集したりしてはいけない。

つまずき.git を手で編集したり消したりすると履歴が壊れる。.git ごと消すと、それまでのコミットがすべて失われる。

.git の中には履歴やオブジェクトが Git 独自の形式で収められている。ここを直接いじると履歴が壊れる。

間違って .git ごと削除すると、それまでに積んだコミットがすべて失われ、フォルダは「ただの普通のフォルダ」に戻ってしまう。バージョン管理されているという状態は、この .git の存在そのものに支えられている。

🛠 実務でどう効くのか

ひとりで書く文章や設定ファイル、ちょっとしたスクリプトでも、git init して履歴を残し始めるだけで十分役立つ。

リモートのサーバーは必須ではない。「戻せる・履歴が残る・枝を分けて試せる」という Git の恩恵は、手元のリポジトリだけでもすべて手に入る。

コツひとり作業でもリモート不要。git init して履歴を残すだけで「戻せる・追える・枝で試せる」が手に入る。

一方、チームで進めるプロジェクトや、すでに公開されているソフトウェアに手を加えたいときは git clone から始めるのが定石だ。clone なら過去の経緯がすべて手元に来るので、いきなり履歴をたどって「このコードはなぜこうなったのか」を調べられる。

まずは自分の練習用に git init で空のリポジトリを1つ作り、次の段階で変更を記録する流れへ進んでいこう。

この項目に出てくる用語

リポジトリりぽじとり
変更履歴をまとめて保存する入れ物。略してリポとも呼ぶ。
クローンくろーん
既存のリポジトリを履歴ごと手元に複製すること。

関連コマンド

git initgit clone

▶ 学習アプリでこの続きを学ぶ・演習する