DEVELOPMENT
目次
今となっては、エンジニアとなったら必ず通る道。
Gitでのソースコード管理。
今となっては、エンジニアとなったら必ず通る道。Gitでのソースコード管理。Github上でweb公開するのにもGitの知識が必須となります。ターミナル上でのコマンドばかりで理解しづらいGitの管理を便利GUIツール GitForkの紹介とGitの基本コマンドなどをご紹介します
Gitとは
よく紹介されている言葉でいうと
分散型ソースコードバージョン管理システム
です。
自分ひとりで作業している分には全く気にしなくても大丈夫ですが、
- 複数人で同じプロジェクトをすすめる
- 誰かに自分のやったコードをチェックしてもらう
等のときには、とても便利でなくてはならない存在なのです。
例
あなたとと彼女等パートナーで、家計簿をあなたはあなたのPCのエクセルで、彼女は彼女のPCのエクセルで管理しているとします。
- あなたが今日、ラーメン二郎を目黒店で食べて、500円使いました。
- あなたは家に帰り、あなたのPCを開きエクセルに、「食費:500円」と記入しました。
- 記入したので、彼女のPCに送り、あなたの更新を彼女にも共有しました。
- 次の日彼女が、カフェで2000円使いましたので、彼女も彼女のPCで昨日あなたから受け取った最新の更新であるエクセルに記入しました。
- 記入したので、あなたのPCに送り、彼女の更新をあなたにも共有しました。
ここまではOKで何ら問題なしです。
- 次にジロリアンのあなたが、我慢できなくなり、また二郎にいってラーメンを食べたました。
- 同日にカフェ好きの彼女はまたカフェでランチをしました。
- 先に帰ってきたあなたは、エクセルに記入し、すぐに彼女に送ろうとしましたが、出先で彼女も更新を行い、あなたのPCに最新のエクセルを送ってきました。
- この時点で、先に送ろうと思ったあなたの更新を含むエクセルと、すでに送られてきた彼女のエクセルでは差分が発生しています。
- なので、あなたはせっかく更新した自分のエクセルを一旦破棄し、彼女から送られてきたエクセルを開き自分の更新を再度追記しなくてはいけなくなってしまいました。
ここから
- これに面倒だと気がついたあなたは、それぞれが毎回更新したらあなたのicloudを彼女に共有し、その置き場に更新後、必ずUPすることにしました。
- そして毎回作業するときは、この最新をicloudから落としてきて、更新し、更新が終わったらUPするようにしました。
- そして自分がUPしようとした時に、自分が落としてきたときより、icloud上のエクセルが更新されている場合、UPすることを禁止し、そのすでに更新されているicloud上のエクセルの更新を自分のPCに取り込んだ上で再度UPするようにルールづけしました。
- こうすることで色々と解消されます。
この仕組がGitで行うことができます。 これをソースソースコードに置き換えて考えた時に、プログラミング等のファイルも同じことが言えます。
Gitは、これらのファイルの競合を解消しながら、共同でプロジェクトファイルのバージョンを管理してくれる仕組みです。
※途中の二郎の下り等全くどうでもいいですね。 すみません。
Githubとは
上の例で言ったら、あなたが彼女に共有したiCloudのファイルの置き場が、Githubにあたります。ソースコードのバージョン管理をweb上で行ってくれるwebサービスということになります。
同じようなサービスは他に、GitLabや、Bitbucket等があります。
例をGitに置き換えてみる
実際にファイルを更新する際の例
先程の例で、エクセルの更新作業をする際、
- 最新をweb(例だと icloud)からダウンロードする
- 自分のPCで更新作業をする
- 自分のPCで更新を確認する
- 自分のPCで更新した内容をメモる
- 更新内容をweb(例だと icloud)にUPし完了
となりますが、
Githubを使って全く同じことをGitに置き換えると
- 最新をGithub上からPullしてくる
- 自分のPCで更新作業をする
- 自分のPC(ローカル)で更新内容を add してインデックス登録する
- 自分のPCで更新した内容を Commitしつつログ(メモ)を残す
- 行員内容をGithub上にPushする
となります!
次によく使う用語で概要をお話したいと思います。
よく使うGitの用語
ローカルとリモート
上の例では、1でリモート(web)から落としてきて、5でリモートへUPしてます。 2〜4の更新、add、commitはあなたのPCでの作業。つまりローカルということになります。
Gitは、ローカルとリモートを紐付け、ローカルでの更新をリモートにUPしていくイメージとなります。
リモートとローカルのやり取りは、最初の紐付け以外、pushとpullだけとなります。それ以外のコマンドはリモートに影響はなく、ローカルでの作業となります。
commit
わかりやすく言うと、先程の4番、更新した内容のログを残しておくようなイメージです。 たとえば、このコミットで、どんな更新がされたかというのを記憶しておくことができます(リビジョン)。
add
コミット対象となるファイルをindex登録する作業で、index登録されていないファイルはコミットすることができません。 つまりコミット前に更新ファイルに対してaddをします。
pull
例で言うと、あなたのicloudや、githubなど、web上から差分(あなたのPCとweb上の)を落としてくる際にしようします。 web上の最新を取り込んでいないと、あなたの更新はpushすることはできませんので、作業まえにほぼ必ずpullします、
push
あなたのローカルでのコミットした更新をweb上にupする作業をする際にpushします。
リポジトリ
リポジトリとは、例でいうと、今回は、あなたと、彼女の家計簿エクセルでしたね。エクセルシートと一緒にレシートもUPすることにした場合、通称家計簿プロジェクトとなり、これらレシート画像とエクセルファイルは同じレポジトリで管理します。もし他に、旅行の写真ように別の場所を用意するとなったら、別のレポジトリを作成し、それぞれのレポジトリに対して操作をすることになります。 保存場所という認識です。
ブランチ
レポジトリ中の別の部屋みたいなイメージです。masterブランチがデフォルトでありますが、ここでは担保されたミスやバグの無いもののみ置かれる形です。
たとえば、家計簿であなたが二郎を食べすぎてこれがお小遣いとして承認するのに、一旦別の承認申請用のブランチを作成し、ここにpushし、彼女にチェックしてもらいます。問題なければ彼女はmasterブランチへこの承認申請用ブランチをマージ(合体)します。
マージ
ブランチで説明したとおり、ブランチとブランチを合体することをマージといい、上の例では、「masterブランチに、承認申請ブランチをマージする」というように、どっちかにどっちかを合体するという感じになります。
基本作業例
あなたは、githubでアカウントを作成し、リポジトリを作りました。まずgithub で作成したリポジトリをローカルに紐付けます。 その後、
初回 remoteレポジトリとの紐付け
$ git remote origin git@github.com:アカウント名/リポジトリ名
このURLはリポジトリ作成時に表示される
github等、web上のレポジトリからローカルに一式落としてくる
$ git clone git@github.com:アカウント名/リポジトリ名
ファイル更新作業をする
- pullして最新のものを落としてくる
$ git pull origin master
- ローカルでファイル更新作業をする 実際の更新作業
- add してindex 登録
$ git add .
プロジェクト配下すべてindex登録する際、.を使います。特定のファイルのみの場合はファイルのパスを
- commit
$ git commit -m "コミットメッセージ"
- pushする
$ git push origin master
自分のいるブランチを確認する
$ git branch
ブランチを作成する
$ git branch ブランチ名
ブランチを切り替える
$ git checkout ブランチ名
自分の更新したファイルの一覧を確認する
$ git status
ブランチをマージする
今masterブランチにて、developというブランチをマージする
$ git branch
> master
$ git merge develop
普段良く使うのはこんなもんだと思います。 他にもcommitを取り消したり、resetしたり、素晴らしく便利なことができたりしますが、なれてきたら調べてやってみてください。 超初心者向けなので割愛します。
Gitfork
Git ForkというGUIのアプリがあります。他にも色々とGit管理系のアプリがありますが、個人的には一番わかりやすく使いやすかったので、紹介します。
ここまで紹介してきた、ブランチ切り替え、マージ、コミットなど、ターミナルでコマンドを叩かなくても視覚的にとてもわかりやすいのです。
更新したファイルは、差分も目視することが出来、とってもいいですよ。
基本を少し覚えたら、これを使うことをおすすめします。
Github Pagesとは
GitHub による、静的サイトのホスティングサービスになります。GitHubのアカウントがあればすぐに静的サイトが無料で公開できるのです。つまりサーバーを借りたり、毎月の費用等なく自分のホームページを作って公開することができます。
これはGitコマンドがわかれば誰でもできますので、このためにもここで紹介した内容くらいは抑えておくといいと思います!
【初心者向け】Github pagesでwebページを公開する方法
まとめ
いかがでしたでしょうか。Gitはエンジニアにとって必須科目となってきています。 将来フリーランスを目指している方など、エンジニアを志すなら言語問わずプロジェクト問わず、必須です。 各企業も当たり前のようにGithub等で、プロジェクトのソースコード管理をしていますので、Gitが使えなければ誰も雇ってくれません。といっても過言ではありませんので、
言語を選ぶまえにシェルコマンドやGitコマンドを学びましょう。
質問やおかしなところがあればお気軽にコメント下さい。
読んでいただきありがとうございました。
株式会社UKAI 代表取締役CEO。建築を専攻していたが、新卒でYahoo!Japanにエンジニアとして入社。その後、転職、脱サラ、フリーランスエンジニアを経て、田舎へ移住し、ゲストハウスの開業、法人成り。ゲストハウス2軒、焼肉店、カフェ、食品製造業を運営しています。詳細はこちらから