リポジトリを作る(init / clone)
Gitはファイルの変更履歴を記録するバージョン管理ツールです。記録の入れ物を「リポジトリ」と呼び、新規に作るときは git init、既存のものを手元に複製するときは git clone を使います。init を実行すると、その場所に隠しフォルダ .git ができ、そこに履歴がすべて保存されます。まずはこの「履歴の箱」を用意するところから始めます。
ファイルを編集していると、「昨日の状態に戻したい」「この変更で動かなくなったので消す前に取っておきたい」と思う場面が必ず訪れます。多くの人はそこで report.txt・report_最新.txt・report_これ_本当に最終.txt のようにコピーを増やしていきますが、この方法はすぐに破綻します。どれが最新か分からなくなり、誰がどこを変えたのかもたどれません。こうした「変更の履歴を安全に記録し、いつでも過去に戻れるようにする」仕組みをバージョン管理と呼び、その代表が Git です。Git は変更を記録するたびに、その瞬間のプロジェクト全体の姿を写真のように丸ごと保存します。だから過去の任意の地点をまるごと取り出せ、いつ・誰が・なぜ変えたのかも後から追えます。最初の一歩は、この履歴を保存するための入れ物を用意することです。
Git が履歴を保存する入れ物のことをリポジトリ(git-repository)と呼びます。リポジトリの正体は、プロジェクトのフォルダの中に作られる .git という隠しフォルダで、ここに過去のすべての記録が収まっています。つまり .git があるフォルダが「Git で管理されている場所」で、この .git を消すと履歴もまるごと失われます。リポジトリを手に入れる方法は大きく2つあります。何もない新しいフォルダを管理対象にする git init と、すでにどこかにあるリポジトリを丸ごと手元へ複製する git clone です。これから自分で始めるなら init、既存のプロジェクトに参加するなら clone、と覚えると迷いません。
新しく作る git init
手元のフォルダを新たに Git の管理下に置くには、そのフォルダの中で git init を実行します。実際の流れはこうです。mkdir myproject でフォルダを作り、cd myproject で中へ入り、そこで git init と打ちます。すると「Initialized empty Git repository in /home/user01/myproject/.git/」のようなメッセージが出て、隠しフォルダ .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 init.defaultBranch main としておくと、新しく作るリポジトリの最初のブランチ名が main になります。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 という同名フォルダに複製されます。clone のうれしい点は、履歴が丸ごとコピーされるだけでなく、複製元が origin という名前の「送り先」として自動で登録されることです。これにより、あとで変更を送り返したり最新を取り込んだりがすぐにできます。複製が終わったら cd sample で中に入れば、その瞬間から過去のコミットもすべて使える状態になります。新しくプロジェクトへ参加するときの、まさに最初の一手です。
つまずきやすい点と使いどころ
初学者がよくやる失敗が、すでに Git 管理下にあるフォルダの中で、さらに git init を重ねて打ってしまうことです。既存の .git があるフォルダで init してもエラーにはなりませんが、混乱のもとなので、まずは git status を打って「ここはもう Git 管理下かどうか」を確かめる癖をつけましょう。もう一つの典型は、clone する場所を意識せず、いま自分がいるフォルダの中にどんどん複製してしまうことです。clone はカレントディレクトリの直下に新しいフォルダを作るので、実行前に pwd で現在地を確認しておくと、思わぬ場所に展開する事故を防げます。
もう一つ覚えておきたいのが、.git フォルダは手で開いたり中身を編集したりしないということです。.git の中には履歴やオブジェクトが Git 独自の形式で収められており、ここを直接いじると履歴が壊れます。間違って .git ごと削除すると、それまでに積んだコミットがすべて失われ、フォルダは「ただの普通のフォルダ」に戻ってしまいます。バージョン管理されているという状態は、この .git の存在そのものに支えられている、と意識しておきましょう。
実務では、ひとりで書く文章や設定ファイル、ちょっとしたスクリプトでも git init して履歴を残し始めるだけで十分役立ちます。リモートのサーバーは必須ではなく、「戻せる・履歴が残る・枝を分けて試せる」という Git の恩恵は、手元のリポジトリだけでもすべて手に入ります。一方、チームで進めるプロジェクトや、すでに公開されているソフトウェアに手を加えたいときは git clone から始めるのが定石です。clone なら過去の経緯がすべて手元に来るので、いきなり履歴をたどって「このコードはなぜこうなったのか」を調べられます。まずは自分の練習用に git init で空のリポジトリを1つ作り、次の段階で変更を記録する流れへ進んでいきましょう。