はじめまして!!

KDDIアイレット株式会社26卒新入社員 原屋暖(はらや だん)です!

今回は先日の技術研修で学んだGitが、初学者には少し難しいなと感じたのですが、それ以上に学ぶ価値が詰まったツールだと実感したため、理解しやすいように内容をまとめました!

研修ではSourceTreeというソフトを使ってGUIでGit操作を行ったのですが、記事にまとめやすいように今回はCLI(コマンドライン)での操作を中心に書こうと思います。

Gitの説明に入る前にちょっとだけ自己紹介。

私は3年制の専門学校に通ってて、専門学校ではWebとモバイルアプリを少しだけ開発した経験があります。
また、趣味でラズパイでWebサーバ立てたり、CTFに挑戦したりしてました。

初のブログ投稿なので、緊張しますが楽しみながら執筆していこうと思います!

1. Gitとは?

Gitとは、ファイルのバージョン管理システムです。

と、よく言われますが、私が初学者の時にそんなこと言われても、正直わかりませんでした。

イメージとしては、 ファイルのセーブポイント を作るシステムです。

そのセーブポイントを指定したら、ファイルの状態を指定したセーブポイントの状態に戻すことができます。

以下の図のようにエンディングが分岐するゲームのように選択肢を間違えてバッドエンドになってしまっても、戻ることが出来ます。(開発で言うと、機能実装がうまくいかなくても、コマンドちょちょいで機能実装前に戻ることが出来ます)

Gitを使っていて一番メリットを感じる瞬間は AIを活用した開発 です。

最近のAIはエージェントが複数ファイルを操作して機能を実装してくれます。

しかし、AIが実装した機能が見当違いだった場合、変更された複数ファイルと、そのファイルのどの部分が変更されたかを確認して戻す必要があり、それが10ファイルとかになるとヤバいです。

正直AIがない時代に個人開発していた頃は、開発規模が小さかったのもありますが、Gitの重要性はあまり感じていませんでした。

2. Gitの使い方

さて、Gitの概要を説明したところで、次はGitの使い方に移ろうと思います。

Gitのコマンドはたくさんありますが、色々紹介すると長くなってしまうため、まずは「セーブポイントを作って移動してみる」 までを今回のブログの目標とします。

1. ファイル管理の開始

まず、ターミナル(黒い画面)を開いて、Gitによるバージョン管理を行いたいフォルダに移動します。
移動したら、以下のコマンドを実行します。

git init

このコマンドを実行すると、「.git」という隠しフォルダが作成されます。
ファイルのバージョン情報がこのフォルダ内のファイルに保存されていくことで、いつでもセーブポイントに戻すことができるようになるわけですね。
git init をしたら、そのフォルダでもう実行する必要はありません。

2. 保存するファイルを選ぶ

ファイルを変更したら、「このファイルを変更したよ」ということをGit側に伝えてあげる必要があります。
そのために以下のコマンドを実行します。

git add ファイル名

このコマンドを実行すると、保存するファイルを選ぶことが出来ます。
ちなみに、複数ファイルを変更した場合は、以下のようなコマンドを実行します。

git add ファイル名1 ファイル名2 ファイル名3 ...

また、変更したすべてのファイルを保存したい場合は、以下のコマンドを実行します。

git add .

このコマンドを実行すると、変更したファイルをすべて選ぶことが出来ます。

3. 変更を確定する

さきほどの git add では、変更をGit側に保存するファイルの選択を行いました。 そのため、まだ確定はしていません。
変更を確定するために、以下のコマンドを実行します。

git commit -m 'メッセージ(例:ユーザ認証機能を実装 など)'

このコマンドを実行すると、先ほど作成された「.git」フォルダに新しいセーブポイントとして変更が保存され、いつでもここに戻ってくることができるようになります。

4. もしもの時の戻り方

ステージング後に、機能実装したくて変更を加えたけど、うまくいかなかったから戻したい!みたいなときに実行します。
しかし、このコマンドはファイルの状態を戻すために単体で使うことはあまりなく、下記で説明するブランチを切り替えることでファイルの状態を戻す方が私的には多いです。

git restore ファイル名

このコマンドも git add と同じように複数ファイルを選択したり、ファイルすべてを選択することが出来ます。

3. AIを活用した開発にも有用

AIを活用した開発でよく使うコマンドを紹介します。

ですが、その前に「ブランチ」について説明しておきます。

ブランチについて

ブランチ という概念がよくわからないと思うのですが、簡単に言うと セーブポイントの複製 だと考えてください。
もし、mainというブランチに最新のソースコードがあり、新しく機能を追加したいなと考えたときは、新たなブランチを作ることで、セーブポイントの複製を行うことが出来ます。
そのため、新たなブランチで機能追加に失敗して、mainブランチのファイルの状態に戻したい時に、いつでも戻ることが出来ます。
下記では、ブランチの作成、切り替え、削除、統合に使用するコマンドを紹介します。

■ ブランチを作って切り替える

現在いるブランチ(デフォルトだとmasterとかmain)から新しくブランチを作成して、そのブランチに移動します。 上記で書いていたセーブポイントの複製に当たります。

git switch -c 新たなブランチ名

ブランチの命名規則はあると思いますが、個人で練習する時は身につくまではとりあえずtestとかでもいいんじゃないかなと思います。

■ ブランチを切り替える

新しくブランチを作成して機能追加しようとしたけど失敗してしまった!みたいなときに、前のブランチに戻ることで、プログラムが動く状態まで戻すことが出来ます。
セーブポイントを選択してやり直すことができるわけですね。

git switch 既存のブランチ名

⚠️ 注意:ブランチを切り替える前に ソースコードを変更した状態で git switch をしようとするとエラーになることがあります。
ブランチを切り替える際は、 git commit でコミットするか、 git restore でもとに戻した状態で切り替えましょう。

■ ブランチを統合する

現在いるブランチに対して、他のブランチを統合することが出来ます。

git merge 統合したい対象のブランチ名

このコマンドを実行すると、対象のブランチで行った変更内容が、現在いるブランチに統合(マージ)されます。

■ ブランチを削除する

いらなくなったブランチを削除することができます。

以下のコマンドを実行すると、指定されたブランチは他のブランチに対して統合済みの場合のみ、削除されます。

git branch -d 既存のブランチ名

機能追加に失敗したなどの理由で統合せずにブランチを削除したい場合は、ブランチを強制的に削除する以下のコマンドを実行します。

git branch -D 既存のブランチ名

個人開発では、これらのコマンドを使えばGitを使っていない頃よりも効率的に開発ができると思います。
実際に私が開発する際のローテーションを紹介します。
デフォルトのブランチがmainで、新しく作成するブランチをtestとします。

開発の流れ

上記のような手順でコマンドを実行することで、以下のような動きができます。

  • 機能追加に成功したらmainブランチに統合して、次のブランチを新たに作り開発を進める。
  • 機能追加に失敗したらmainブランチに戻って、失敗したブランチを削除して、もう一度実装に挑む。

従来使われていた git checkout コマンドを使うアプローチがあったり、GitHubが絡んできたりするので、毎回この手順だけで完結するわけではありませんが、Gitの基本的な運用の流れとしてはイメージしやすいのではないでしょうか。

まとめ

今回は技術研修で学んだGitについて、初学者でもわかりやすいようにまとめました!
しかし、このブログを読むだけでは正直完全な理解は出来ないと思います。
自分で使ってみることで理解が深まっていき、身につける事ができると思います!
最初はよくわからなくて遠ざけてしまうこともあると思います(私の話です。)が、まずはとりあえず使ってみて、試行錯誤ながらも一緒に成長していきましょう!