開発では必須!Gitを使いこなすには

目次

はじめに

初めまして!

去年新卒で入社したサーバーサイドエンジニアのOHです。

今回はGitについての記事を書いていきます。 具体的な内容は以下になります。

  • Gitの概要

  • Gitの学び方

これからGitの勉強を始める方や「Gitをどう学べばいいかわからない」と迷っている方のお役に立てるような記事になれば嬉しいです。

Gitの概要

Gitとは?

Gitとはソースコードなどのファイルのバージョン管理をしてくれるシステムの1つです。 Gitを使う事でソースコードなどファイルに対しておこなった変更を複数人で共有し開発を円滑に進めることが可能です。

テキストでは伝わりづらい部分もございますので、具体的にどういった流れで開発していくのか図にしてみました。

まずGitにはリポジトリというものがあります。

リポジトリとはファイルなどを格納、保管する場所になります。

f:id:rf-blog-sagyo:20210521145829p:plain
リポジトリ

サーバー上、インターネット上に置いてある(例 GitHubなどで作成した)リポジトリリモートリポジトリと呼びます。

リモートリポジトリから自身のPCのローカル環境にファイルをコピーしてきます。

このローカル環境に持ってきたリポジトリローカルリポジトリと呼びます。

f:id:rf-blog-sagyo:20210521150035p:plain

リポジトリの用意ができたら、自分が作業する為のブランチを作る必要があります。

ブランチとは作業した履歴を枝分かれさせ記録していくためのものです。 リモートリポジトリで区切られているブランチの例は以下です。

バージョン1.2で機能追加する際は、バージョン1.2から自分が作業するブランチを切ります。

f:id:rf-blog-sagyo:20210524160355p:plain
ブランチの例

例えば作業者Aが新規ファイルを追加したいとなった場合

ブランチを作ってファイルを追加しただけでは、リモートリポジトリには反映されません。

リモートリポジトリに反映させるには、Gitクライアントツールを使ったり、ターミナルにGitコマンドを入力して反映します。 反映すると、自分で作ったブランチがリモートリポジトリに追加されます。

f:id:rf-blog-sagyo:20210524174246p:plain

リモートリポジトリに反映された自分のブランチを、マージ対象のブランチにマージします。

そうなった場合でも作業B、Cのブランチには影響はありません。その為続けて作業する事が可能です。

f:id:rf-blog-sagyo:20210524175645p:plain

ただ安全に開発をするために自分のブランチをリモートリポジトリに反映する際には、最新の状態のファイルなどを取ると良いでしょう。

f:id:rf-blog-sagyo:20210521165446p:plain

このようにしてGitでは同時に複数人で並行して開発することが可能です。

Gitの学び方

自分が学んだ方法

私が初めてGitを学んだのは学校の授業です。 TortoiseGitというGitクライアントツールを使いGitの基本を学びました。

これからGitを学ぶ人は、Gitクライアントツールから入ることをオススメします。 最初はGitの設定で手こずってしまったりするので、ツールを使えばGit設定なども一緒にやってくれます。 そのためすぐ使うことができるし、簡単操作、わかりやすいUIでGitをストレス無く学ぶことができます。

Gitクライアントツールっていっぱいあるからどれがいいかわからない人はとりあえずForkを使うといいですよ、 WindowsMacに対応しており、対応言語は英語しかありませんが使い勝手の良いさまざまな機能ありオススメです。

git-fork.com

ただしForkは評価に関しては無料ですが、長期に渡る利用は有料になりますので
もし気に入って長く使いたいと思った場合は、購入をお願いいたします!

git-fork.com

余談を挟みましたが、私がGitをしっかりと学んだのは入社してからになります。 それまではコミット、プッシュなど基本的な動作しかわかりませんでした。

入社後初めてターミナルでGitコマンドを使いましたが、最初はコマンドを覚えれるかとても心配でした。 そんな中、どのようにしてGitコマンドを学んだのかというと、『実際に1つずつコマンドを打ち挙動を確認して、どういう挙動だったかを1つずつまとめて理解を深める』という方法です。

f:id:rf-blog-sagyo:20210524181732p:plain

上記のように実行、その内容、結果をまとめる事で自分が何をやっているのかがわかります。

基本的なコミット、プッシュなどの動作を学びたい人はGitクライアントツールの方が学びやすいと思いますが、 慣れてきたり、もっと理解を深めたい人はGitコマンドで学ぶことをオススメします。

ちなみに現在私が開発をする時はターミナルでGitコマンドを使用しています。 「なぜ便利なGitクライアントツールを使わないの?」と思いますよね。会社からGitクライアントツールを禁止されている訳とかではないですよ。

確かに便利なのですが、GitクライアントツールではGitコマンドの細かい操作がしづらい為、ターミナルでGitコマンドを使っています。

Gitクライアントツールも全てが便利という訳ではないのでそこも考慮してどちらで学ぶか考えてみてください。

Gitを学ぶための準備

学び方を書いただけでは具体的な準備がないとできない!となりますので、リポジトリ作成まで記載していきたいと思います。

Gitを学ぶためにはまず一番大事なGitを自身のPCにインストールします。 これがないと何も始めることができないです。

MacはデフォルトでGitが入っていますが、最新のものにすることをオススメします。

インストール方法は下記のGit公式に書いてあります! git-scm.com

次にGitを学ぶ為に必要なリポジトリについてです。 自分のPC内でリポジトリを作ってもいいのですが、GitHub・GitLabを使った方が簡単にリポジトリを作ることできます。 実際の開発ではGitHub・GitLab使うことがあるので、学んでおくと良いでしょう。

github.com

about.gitlab.com

簡単にGitHubでのリポジトリの作り方を説明します。 と、その前に!GitHubのアカウントを作成しておいてください。

まずGitHubのトップ画面に行きます 赤枠で囲まれている、『new』というボタンを押してください。

f:id:rf-blog-sagyo:20210610170936p:plain

次にリポジトリの名前を決めます。ここではtestとしています。 descriptionはあっても無くても平気です。

Gitの学習のために使うのでpublicでもprivateでもどっちでもいいのですが、他の人に見られるのと困る場合(恥ずかしさ的に)があるのでprivateにしています。

下のチェックはAdd a README fileだけつけています。 (リポジトリと一緒にブランチを作成してくれて、READMEファイルをGitの練習として使うこともできるのでつけています。)

Create repositoryを押せばリポジトリの完成です。

f:id:rf-blog-sagyo:20210610170931p:plain

完成したリポジトリ画面になります。

f:id:rf-blog-sagyo:20210610170924p:plain

完成したリポジトリをGitコマンド、Gitクライアントツールを使う事でローカル環境にリポジトリを持ってくることができます。

覚えて損のないGitコマンド

ここからは自分がGitコマンドを使っていて便利だな、これ覚えないの損だなと思うGitコマンドを紹介したいと思います。

そのコマンドが rebase です。

今回はこのrebaseを使ってコミットメッセージを変えたいと思います。

テストリポジトリを作成し、indexファイルを追加しました。 f:id:rf-blog-sagyo:20210524182914p:plain

コミットメッセージをミスしてコミットします。

f:id:rf-blog-sagyo:20210524182923p:plain

git logで確認してみるとコミットメッセージをちゃんとミスしてますね。

f:id:rf-blog-sagyo:20210524183703p:plain

続いてgit rebaseにオプション -iを指定します、コミットメッセージを失敗したコミットを選択して実行。

実行をするとこのような画面に行きpickの部分を変えることで様々なモードに変えることができます。

今回はコミットメッセージなのでrのrewordを選択

f:id:rf-blog-sagyo:20210524182930p:plain

そしてコミットメッセージを整形

コミットメッセージを保存し、テキストエディタを終了させます。

f:id:rf-blog-sagyo:20210524182902p:plain

このように整形されたコミットメッセージに変わります。

とても簡単にコミットメッセージを変える事ができます。

git rebase をする事で複数のコミットメッセージを変えることも可能です。

f:id:rf-blog-sagyo:20210524183717p:plain

そのほかにも複数のコミットを1つにまとめることができるsquash、コミットを内容(ソースコード)などを編集することができるeditなどがあります。 ぜひ覚えて頂きたいです!

まぁコミットメッセージだけならgit commit --amend -m "コメント"で編集することできるんですけどね...

まとめ

コマンドの動作検証を行い、自分が理解しているか確認をするために実行結果を見て何かに書くことは大事だと思います。 自分がどこで詰まって理解ができないかの確認もする事ができるので、今Gitを理解できずに悩んでいる人、これから勉強する人はぜひ試してみてください!