『わかばちゃんと学ぶGit使い方入門』でGitのおさらいをしてみた

はいどーもこんにちは、プロのプログラマになった元ニートです。
と言っても実は一ヶ月ほど前からちょいちょい作成したものを提出してました。
そのときGitとBitBucketを使ってPushしたりしてたわけなんですが(GitHubの方が僕は好きです)、「あれえ? これどうすっぺ?」みたいな疑問に駆られること数知れず。
そのときそのときで先輩プログラマ(正確にはプログラマではないらしいんですけど、そんな区分は元ニートにはわからない)にGitの使い方を教わっていました。
が、こりゃあかんということで、本日は『わかばちゃんと学ぶGit使い方入門』をサラッと一通り目を通すことにしました。

ちなみに前回読んだのは9月30日だったようです。

サクサク進む

前回読んだときは完全なGit初心者ということもあって、読了までに数時間はかかった記憶があります。
しかし今は普段からGitを使っている&「こういうとき、どうすればいい?」という疑問を解決するためだけに読んだおかげか、一時間足らずで読み終わりました。
ちゅーわけで目に入った発見を適当にピックアップしていきたいと思いますよ。

ステージエリアの存在意義

SourceTreeを使っている方なら、コミットする前に「全てインデックスに追加」ボタンを使うことが多いかなと思います。
僕もごたぶんに漏れず機会的にこのボタンを使っていたわけなのですが、「この一手間邪魔やんけ」と常々感じていました(本書の主人公も「この一手間邪魔やんけ」みたいなこと言ってて笑いました)。
しかしこのステージエリアは以下のような存在意義があるようですよ。

・複数のファイルを小分けにしてコミットしたい場合
・まだコミットせずにおきたい変更がある場合

確かに、上記のようなことは多々あります。
こんなとき僕は「コミットできる時点まで開発進めてからコミットする」ということをやっていたのですが、なるべく小さくコミットしたい(作業単位ごとにしたい)という欲求もあったので、なかなかもどかしい思いをしていました。
これからはバッチリ解決ですね。

集中型と分散型

「Gitは分散型である」と言うのは皆さんなんとなく知っていると思うのですが、詳しいところはよくわかっていませんでした。
本書によれば「集中型はひとつの中心リポジトリに接続してみんなで使う」ものであるのに対し、分散型は「中心リポジトリはあるが(普通のユーザーならGitHubなどで作ったものが中心リポジトリに相当する)、各自のパソコン上にもリポジトリを持っている」ことが大きな違いのようです。

つまり

・集中型は必ず中心リポジトリを介してコミット等がおこなわれ、ひとりひとりの操作はただちに中心リポジトリに影響を与える。言い換えると、中心リポジトリが壊れると、全てのデータが壊れる危険性がある
・分散型は中心リポジトリを持つ場合が多いが、必ずしも中心リポジトリを持つ必要はない。また、中心リポジトリに接続するタイミングは任意であり、各々のローカル環境に自分だけのリポジトリを持つことができる。したがって、中心リポジトリが壊れた場合でも、各々のデータを持ち合わせるだけでデータの復元ができる(ことが多い)

こんな感じでしょうか。
集中型と呼ばれているシステムを使ったことがないので、間違ってたらすみませんw

プルリクエスト

実はまだプルリクエストはしたことがありません。
ただ、「プッシュリクエスト」ではなく「プルリクエスト」である理由はGitを操作しているうちになんとなくわかりました。

プルとは「誰かが中心リポジトリに送ってきたデータをフェッチ+マージすること」です。
プルリクエストは、第三者に「俺の作った最強のプログラムをプルしておくれ」と要望を出すことです。
プルリクエストが送られた側から見れば、「第三者が作ったデータをプルすること」となります。
だもんで、当然リジェクトされることもあるでしょう。
むしろリジェクトできるのがプルリクエストの最大のメリットとも言えるんじゃないかなーと思っています(プッシュしたら即反映されるのと比較してみてください)。

僕もそのうちプルリクエストを試してみたいなあと思うのですが、するものが……w

GitHub Flow

「Gitはこんなふうに使うと便利ですよー」というものを示したGitHub Flowというものがあります。
詳しくはググっていただくとして「masterブランチはいつでも本番反映可能」という考え方くらいならGit初心者の僕でもすぐに実践できます。
そしてまた、かなり効果があるんじゃないかなーと思います(現在取り組んでいるプロジェクトでもやっています)。
オススメ。

スカッシュ

そういやこんな機能(スカッシュ)あったなあって……。
リベースもそうですが、原則として「ローカル環境にしかないコミット」に対してのみおこなうことがよいようですね。
つまり、リモートリポジトリにあるコミットに対してスカッシュやリベースをおこなうと、ローカル環境の履歴と中心リポジトリの履歴に食い違いが出てきちゃうんですね。
気をつけたいと思います。

リモート追跡ブランチ

本書の中で「プル」「フェッチ」の違いおよび「リモートブランチ」「リモート追跡ブランチ」「ローカルブランチ」の違いがわかりやすいイラストで説明されています。
実はフェッチって全然使ったことないのですが、チーム開発が本格的に始まったら利用する機会も増えるのかしらん。

終わりに

前回の『わかばちゃんと学ぶGit使い方入門』の感想記事より少し詳しめに書きました。
と言うより、詳しめに書けるようになった、というのが正解でしょうかw

3月から仕事が始まり、わりとあたふたとしていますが、仕事自体はとても楽しいですね。
メンバーのみなさんも良い方ばかりなので、僕もモリモリとやる気が出ています。
元ニートにはできすぎた環境ですねえ!

作ったゲームが売れるように僕もがんばっていきたいと思いますよ。

フォローする

『『わかばちゃんと学ぶGit使い方入門』でGitのおさらいをしてみた』へのコメント

  1. 名前:CentroOrion 投稿日:2018/03/17(土) 02:01:41 ID:ee1731d63

    ありがとうございました