はじめに
はじめまして。フロントエンドエンジニア2年目に突入したKRです。最近スロットで、逆コンプリートを達成しました!!金欠です!!今回は、入社して最初にぶつかった壁「Git」について書いていこうと思います。
まず特に困ったのがブランチの概念です。「ブランチを切って作業して」と言われても、そもそもブランチって何?切るってどういうこと?という状態からのスタートでした。
この記事では、そんな自分がつまずいたブランチの概念から、1年間実際によく使ったコマンドまでを体験とあわせてまとめています。同じように悩んでいる新卒・初心者エンジニアの参考になれば嬉しいです。
そもそもブランチって何?
Gitを理解する上で避けて通れないのがブランチの概念です。
簡単に言うと、ブランチとは「作業用のコピー」です。
たとえば、Wordで大事な書類を編集するとき、元のファイルはそのままにして「コピー」を作ってから編集しますよね。それと同じイメージです。

チームで開発すると、複数人が同時に別々の機能を作ります。それぞれがdevelopから自分用のブランチを作って作業することで、お互いの作業が干渉しないようになっています。
これがブランチの役割です。最初はピンとこなかったのですが、実際にチーム開発をしてみて「なるほどこのためにあるのか」と腑に落ちました。
よく使うコマンドたち
git pull ── 作業開始前の習慣

チームで開発していると、自分が退勤した後も他の人がコードを更新しています。git pullはその更新を自分のPCに取り込むコマンドです。
作業開始前に、まずgit pull。これが習慣になりました。これをやらずに作業を始めると、後で「あれ、なんか古いコードで作業してた…」となりがちです。
git branch ── 今どこにいるか確認する

現在存在するブランチの一覧と、今自分がどのブランチにいるかを確認できます。

最初のころはこれを確認せずに作業して、「あれ、developで直接作業してた…」ということが何度かありました。作業前に確認する癖をつけましょう。
git switch ── ブランチを移動する

別のブランチに移動するコマンドです。

git switch -c ── 新しいブランチを作って移動する

新しくブランチを作りながら、そのブランチに移動するコマンドです。

タスクを始めるたびにこれを使います。-cは「create(作成)」の略です。
注意点として、このコマンドは今いるブランチを元に新しいブランチを作成します。 そのため、git switch -cを実行する前に、まず元にしたいブランチに移動してから行うようにしましょう。

これをやらずに意図しないブランチから切ってしまうと、そのブランチの変更内容まで引き継いだ状態で新しいブランチが作られてしまうので注意が必要です。
やらかした話:ブランチを間違えて作業してしまった
正直に言います。ブランチを間違えたまま1時間作業したことが何度もあります。
別のタスクのブランチで作業しないといけないのに、前のブランチのままになっていることに気づかず、コードをガッツリ書いてしまいました。
「このままgit switchしたら書いたコード消えてしまう…?」と焦りましたが、そこで活躍したのがgit stashです。
git stash ── 作業を一時退避する

作業中の変更を一時的に退避(保存)するコマンドです。引き出しに一旦しまうイメージです。

git stash pop ── 退避した作業を戻す

git stashで退避した変更を、現在のブランチに復元するコマンドです。

先ほどのやらかしを解決する一連の流れをまとめるとこうなります。

これを知った時は「こんな便利なコマンドがあるのか!」と感動しました。
git branch -d ── 間違えて作成したブランチを削除する

不要になったブランチを削除するコマンドです。
ブランチ名をタイポしてしまったり、間違えたブランチを作ってしまった時に使います。「あ、ブランチ名ミスった」と気づいた時にサッと消せるので覚えておくと便利です。

ちなみに-dを大文字の-Dにすると、強制削除になります。
-dはマージされていないブランチを削除しようとするとエラーになりますが、-Dはそれを無視して強制的に削除します。

間違えて作ったブランチをすぐ消したい時など、まだ何も作業していないブランチであれば-Dを使うと手軽に消せます。ただし、作業内容ごと消えてしまうので使う時は注意が必要です。
まとめ
今回紹介したコマンドをまとめます。
| コマンド | 使う場面 |
|---|---|
| git pull | 最新の状態に更新する |
| git branch | 今どのブランチにいるか確認する |
| git switch | 別のブランチに移動する |
| git switch -c | 新しいブランチを作って移動する |
| git stash | 作業を一時退避する |
| git stash pop | 退避した作業を復元する |
| git branch -d | 間違えて作成したブランチを削除する |
最初はブランチの概念すらわからなかった自分も、実際に使いながら少しずつ身についてきました。コマンドを暗記しようとするより、「こういう場面で使う」というイメージと一緒に覚えるのが一番の近道だと思います。
この記事が、Gitに悩んでいる誰かの助けになれば嬉しいです!
用語集
| 用語 | 意味 |
|---|---|
| リポジトリ | ソースコードや変更履歴をまとめて管理する場所。プロジェクトのフォルダのようなイメージ |
| ブランチ | 本流のコードから分岐した作業用のコピー。機能ごとに作成して作業する |
| main | リリース済みの安定したコードが置かれる最上流のブランチ |
| develop | mainから分岐した開発用ブランチ。各作業ブランチはdevelopから作成し、developにマージする |
| コミット | 変更内容をGitに記録(保存)すること。セーブポイントのようなイメージ |
| プッシュ | 自分のPCの変更をリモートリポジトリ(GitHubなど)に送ること |
| プル | リモートリポジトリの最新の変更を自分のPCに取り込むこと |
| マージ | あるブランチの変更内容を別のブランチに統合すること。作業が終わったらdevelopにマージする |
| リモートリポジトリ | GitHub等のサーバー上にあるリポジトリ。チームで共有する |
| ローカルリポジトリ | 自分のPC上にあるリポジトリ |
| スタッシュ | 作業中の変更を一時的に退避しておく領域のこと |