はじめに
GitやGitHubは実務をこなしていれば使えて当たり前になります。
とはいえ、本当に自分の使い方ってどこでも通用するのか?
そんな疑問を抱き、少しでも情報を得ようとUdemyで以下の講座を受講しました。
Git: もう怖くないGit!チーム開発で必要なGitを完全マスター
すると、__思った以上に自分がGitを理解していないこと__に気づけたんですね。
なので、今回はこの講座で学習したことを紹介しつつ、gitについて軽く触れてみたいと思います。
##まず、Gitとは?
Gitはファイルのバージョンを管理するためのツールです。
WindowsでもLinuxでもMacでも使えます。
Gitが存在することによって、以下のような課題を解決できるんですね。
- 最新のファイルがどれかわからなくなる。
- 誰が、いつ、どのファイルを、どのように変更したかがわからなくなる
- ファイルの場所がどこかわからなくなる
プログラマーやSEがシステム開発に使うツールと思われがちですが、
デザイナーがプロダクトの制作に使ったり、事務でエクセルを管理するのにも役立ちます。
なので、これからGitを使っていくことはPCで作業をされる方にとって必ず役立つと思ってるんですよね。
##Gitの使い方
Gitはコマンドで操作することもできますし、外部のツールを使ってボタン等で操作することもできます。
ちなみに、私はGitをコマンドで操作することが多いです。
しかし、普段コマンド操作に慣れていない方にとって、コマンド操作は少しハードルが高く感じるかもしれません。
なので、コマンド操作に慣れない人はこの講座で内容を理解して、外部ツールを使えば問題ないかなと思います。
##Gitのファイル管理の概念
Gitでは、以下の4箇所にファイルを設置して管理します。
-
ワークツリー
ワークツリーは自分が作業しているディレクトリ(フォルダ)のことです -
ステージ
ステージはワークツリーで変更したファイルを置く場所です。
ステージでは、変更したファイルを記録する準備をするんですよ。
ディレクトリ内の全てのファイルを記録したいわけではないので、変更を記録したファイルのみを一度ステージに追加するんですね。 -
ローカルリポジトリ
ローカルリポジトリは変更を記録したファイルを置く場所です。
ファイルそのものが置かれているわけではなく、圧縮したスナップショットが保管されているんですね。 -
リモートリポジトリ
リモートリポジトリは記録したファイルをチームで共有できる場所で、自分のPCの外にあります。
インターネット(GitHub等)上に存在したり、企業によっては社内のサーバーにリモートリポジトリを準備しています。
##Gitでのファイル操作の流れ
以下の順番で、実際にファイルを操作していきます。
# リモートリポジトリのファイルをワークツリーに持ってくる
# 私はプロジェクトに参画した直後などは、以下のコマンドで最新のソースコードを取得するケースが多いです
$ git pull origin main
# git branchコマンドを使うと、作業ブランチを新規作成することができます
# なので、git pull origin mainの後に、以下のコマンドで開発用のブランチを作成するケースが多いです
$ git branch dev
# git checkoutコマンドを使うと、自分の作業ブランチを切り替えることができます
# なので、git branch devの後に、以下のコマンドで切り替えるケースが多いです
$ git checkout dev
# git addコマンドを使うと変更したファイルをステージに置くことができます
$ git add index.html
# git commitを使うと、ステージにあるファイルをローカルリポジトリに置くことができます
# また、git commitにはコメントをつけることができるので、何のためにファイルを変更したかを記録することができるんですね
$ git commit
# git pushコマンドを使うと、ローカルリポジトリの内容をリモートリポジトリに置くことができます
# 以下のコマンドでは「dev」というブランチ名でリモートリポジトリにファイルを置きます
$ git push origin dev
個人的に役立つと思ったこと
コンフリクト発生時の対応
複数の作業者がいる場合、1つのファイルを複数の人が編集してしまうケースがあります。
そんな時、git push等で次の場所にファイルを置こうと思ってもエラーになるんですね。
これを、コンフリクト(衝突)と呼びます。
実際に現場でコンフリクトが発生すると焦るんですよ。
何が起こったかわからないですからね。
とはいえ、この記事で紹介している講座で予行演習をしておけば、コンフリクトが発生した時の対応スピードは大きく変わると思います。
コンフリクトの解決方法を誤るともっと面倒なことになるので、ここは是非学習しておきたいところですね
GitHubフローの説明
※既に複数の開発経験のある人には不要な説明かと思います
GitHubフローとは、GitHubを使った作業の順序を定型化したものです。
とはいえ、多少企業やプロジェクトによっても異なるとは思いますが、スタートアップで若手のエンジニアが多い場面などでは定型化された手順があることは非常に有効です。
ある程度のルールがないと、悩むことが多くて開発が中々進まないですからね。
最後に
今回はGitの講座について紹介してみました。
権利上の問題とかもあるので、最低限の内容を記載しています。
文字だらけで理解しにくい部分が多いかもしれませんが、実際に講座を受講していただけたら全てクリアになると思ってます。
実際に私は受講してますし、この講座だけでGitの学習は良いのではないかと思っています。
最後まで読んでいただき、ありがとうございます。