大学受験も終わり、ついに個人開発ができる時期が来たと思いきや、バージョン管理? Git? 何それ? という状態で、かなり絶望的だったので、自分なりにGitの使い方をまとめました。
過去の自分のような、何で勉強すればよいのかわからない人たちの助けになればと思います。
1. そもそもGitとは
バージョン管理というものは、 ファイルの変更履歴をすべて保存し、いつでも戻れるようにする仕組み のことです。みなさんも経験はありませんか?
app.js
app2.js
app_final.js
app_real_final.js
どんどんファイル名が長くなっていきます。いちいちファイルを作り直さずとも、ファイルの内容を段階的に記憶し、いつでも戻れるようにしてくれるのがGitです。
2. Gitの仕組み
Gitは3つの領域でタスクをこなします。
- Working Directory(作業ディレクトリ)
- Staging Area(ステージングエリア)「コミットに含める変更を一時的に登録する場所」
- Repository(リポジトリ)「コミット履歴のデータベース」
たとえば、いまあなたはindex.htmlを編集しているとしましょう。これは作業ディレクトリにファイルが存在している状態です。
次に、編集が終わって変更を保存するとき、index.htmlをステージングします。このとき、style.cssなど変更を加えていないものはステージングする必要はありません。
ステージングが終われば、コミット(後述)し、リポジトリに変更履歴が保存されます。
Gitはファイルそのものを保存するのではなく、 ある時点のファイル状態(スナップショット)を保存する仕組みになっているのです。
3. Githubの存在
GitとGithub、名前が似ていてごちゃごちゃしますが、役割の違いは明確です。
- Gitはバージョン管理ツール
- GitHubはGitリポジトリをインターネット上で共有・管理するためのサービス
Githubはのちに説明するリモートリポジトリというものにも関係します。 つまり、うまく2つを使い分けていくことで初めて個人・チーム開発がうまくいく、というわけです。
4. さっそく使ってみる
使わないと始まらないので、失敗を恐れずやってみましょう。できるだけ解説等をしていますのでご安心を。
基本的な使い方(ダウンロードから)
① Gitをインストール
Git公式ページからGitをインストールしましょう。 その後。cmd(コマンドプロンプト)で以下を入力してみましょう。
git --version
そして以下のようなバージョンが出てくれば成功です。
git version 2.xx.x
② フォルダを作成し、ローカルリポジトリを作成
手動で作成することもできますが、せっかくなのでcmdでやりましょう。 以下を入力してデスクトップに移動してみましょう(別にどこでもいいですが)。
cd Desktop
そうしたら、「test」というフォルダを作成しましょう。
mkdir test
そうしたらフォルダに移動します
cd test
そうしたら、いよいよリポジトリの作成です。以下のコマンドを実行してみましょう。
git init
実行が完了すれば、「.git」というフォルダが作成され、これでローカルリポジトリの完成です。
③ ファイルの管理をする
では、gitで管理するファイルを作成しましょう。ファイルは何でも良いですが、今回はcmdを用いて中身に「hello」と書いてあるexample.txtを作成してみます。
echo hello > example.txt
これを実行すればフォルダにexample.txtが作成されます。以下をcmdで実行すればフォルダの中身等を確認できます。
dir
続いて、example.txtを変更(新規作成も含む)したので、変更履歴を残すためにファイルを登録(ステージング)してみましょう
git add example.txt
これで履歴保存をすれば完了です。これを コミット(commit) といい、コミットするには以下のコマンドを用います。
git commit -m "first commit"
これで、保存が完了し、履歴が.gitに記録されました。
これで基本的なGitの操作は完了です。
番外編
基本的な動き以外にも重要なものがいくつかあるので紹介します。
① Gitの状態を確認する
git status
このコマンドを使用すれば、いまのリポジトリの状態が確認できます。確認できる要素は主に以下です。
- Gitに登録されていないファイル
- ステージングされていない変更を持ったファイル
- コミット待ちの変更
② 変更履歴を見る
git log --stat
で、コミットした変更履歴を見ることができます。終了するには「q」を押します。
③ ブランチとマージ
ブランチ(branch) は枝分かれのように開発するために必要な機能で、プロジェクトの作業を分岐させることができます。 これにより今のベースとなるコードに影響を与えずに新機能やバグの修正を進めることができます。
では、実際にブランチを作成してみましょう。今回は「feature」というブランチを作成してみましょう。
git branch feature
これで作成は完了です。それでは作ったブランチに移動していくつかコミットしてみましょう。
git checkout feature
また、作成したブランチの一覧を見るには以下を実行します。
git branch
編集が終われば、このブランチも必要なくなってしまいます。そのようなときは マージ(merge) をしてみます。マージでは前作成したブランチをベースと統合することができます。これは各ブランチの履歴を残して統合できるので、安全でありバグ修正にも有効です。
ではまず、mainブランチ(ベース)に移動して、
git checkout main
マージします。
git merge feature
これで編集されたものがベースに統合されました。
④ リモートリポジトリとの接続
リポジトリには「ローカルリポジトリ」と「リモートリポジトリ」の2種類があります。
ローカルリポジトリはあなたしか見れないリポジトリ(あなたのパソコンだけに存在する)もので、リモートリポジトリはインターネット上のサーバーにあるリポジトリで、公開してあるものと非公開(一部の人しか見れない)ものがあります。
個人開発でなくチーム開発なら特に、自分の成果物を共有するためにはローカルではなくリモートリポジトリに変更を反映させなければなりません。
(1) リモートリポジトリのURLを取得する
Githubにて、リモートリポジトリの取得をします。
まず、githubにてリモートリポジトリを作成しましょう。
左上部の緑の「New」ボタンから新しいリモートリポジトリ作成画面に移動しましょう。

次に、リモートリポジトリの名前を決めます。今回は「test」とします。入力が終わったら、下の緑の「Create repository」を押しましょう。

最後に作成完了画面に出てきた最後が「.git」のURLをコピーすれば取得は完了です。

(2) ローカルからリモートへ接続
cmdに戻り、以下を入力し、実行します。
git remote add origin https://github.com/user/test.git
これで接続が完了です。心配であれば以下を実行してみてください、
git remote -v
以下が返ってくれば成功です。
origin https://github.com/user/test.git (fetch)
origin https://github.com/user/test.git (push)
(3) リモートリポジトリへ反映させる
先程作ったローカルリポジトリから、変更をリモートリポジトリへ保存しましょう。これを プッシュ(push) といいます。プッシュをするためには以下のコマンドを実行します。
git push -u origin main
これでプッシュは完了、リモートリポジトリへ反映されました。
⑤ リモートリポジトリを複製する
逆にリモートリポジトリがすでに存在し、ローカルリポジトリが手元にない場合、リモートリポジトリを複製して手元にローカルリポジトリとすることができます。これを クローン(clone) といいます。
クローンを実行するためには、接続で行ったようにリモートリポジトリのURLを取得し、以下のコマンドを実行します。
git clone https://github.com/user/test.git
cloneは
・リポジトリを初期化 ・remoteを設定 ・履歴を取得 ・最新のブランチをチェックアウト
まで自動で行ってくれます。
⑥ プルとプルリクエスト
最後に プル(pull) と プルリクエスト(pull request) です。名前が似ちゃっていますが役割は全く別物です。ひとつひとつ見ていきましょう。
(1) プル
プル(pull) はいくつかのコマンドをまとめて実行してくれます。
git fetch //リモートの変更を取得
git merge //現在のブランチに統合
プルは基本的に手元のローカルリポジトリとリモートリポジトリを同期(リモートのほうが開発が進んでいる)するために使います。
:::message alert ただし、ローカルとリモートで同じ部分を編集していた場合コンフリクト(衝突)が発生することがあります。 :::
コマンドは以下です。
git pull
(2) プルリクエスト
プルリクエスト(pull request) は、チーム開発にはとても大切な機能です。簡単にいえば、GitHub上のブランチの変更を別のブランチに取り込んでもらうよう依頼する機能です。
プルリクエストの便利なところは、新しく作った機能を実装するときに起こるバグ等を事前に検証したり、コードについてのコメント、議論を可能にすることです。こうしたコードレビューにおいてプルリクエストはもってこいの機能なのです。
またプルリクエストについてはGithubでの操作になるので、Git側ではなにもやることはありません。
5. まとめ
一通りGitについての解説をしました。この記事は自分がGitを学んだときのアウトプット代わりになってしまいますが、私のような初心者プログラマーを助けられるような記事にしたつもりです。間違い等あれば遠慮なく指摘してください。