高専生です。見守ってください

クソカス初心者プログラマーの成長記

僕でもわかったGitHub

テスト週間にこんにちは!JD.です。

ずっとGitってなんや、GitHubってなんなんや、、、、と思ってたんですが、最近やっと使い方を知ったので初心者目線から伝授します。

f:id:jtakuya625:20180608220924j:plain

 

GitHub、聞いたことがある人もそうでない人もいるんじゃないですか?僕は高専3年生が終わるまで知りませんでした笑 

もうGitHub使ってるよって人はブラウザバックした方がいいです。あまりのレベルの低さにゲロ吐く恐れあります。完全な初心者に向けて初心者が解説していきます。

 

GitHubとは

f:id:jtakuya625:20180609022057p:plain

GitHubとはっていうタイトルの記事をいくつも見てたんですが、正直なところよくわからんってのが本音でした。GitHubを使う場面にこれまでの人生遭遇しませんでしたからね。あと専門単語が難しいってのも、GitHubがよくわからんっていう原因になってるんじゃないでしょうか?

GitHubとGitの違い

まず、GitとGitHubは野菜と八百屋くらい違います。結論から言うと「Gitっていうシステムを用いたWebサービスGitHub」です。つまり、便利なGitをより便利にみんなで使えるようにしたものがGitHubと言うわけです。まだよく分からないと思いますが、とりあえず読み進めましょう。

Gitとは

じゃあGitって何よ。って話になるんですが、Gitとは分散型バージョン管理システムだそうです。

初めてこれを見た僕「????????????」

とりあえず分散型という言葉は置いておきましょう。理解するのに必要な情報は最低限でスッキリしている方がいいですからね。そしてバージョン管理ですが、こんな経験ありませんか?

バージョン管理したくなる時の話

僕「あ〜、この前作成した発表プレゼンってどれやったっけ。」

f:id:jtakuya625:20180609024531p:plain

僕「ワカラン!◯ね!」

つまりこういうこと

どうでしょう。どのプレゼン資料が本物の最終版なのかきちんと管理して置いたほうが便利そうじゃないですか?これを管理してくれるのがGitのバージョン管理です。そして、この資料が自分一人で作成したものならまだマシですが、みんなで作成した資料ならどうでしょう。みんながどれを作成しているのか把握できなくなります。これを解消してくれるのが、GitHubでのバージョン管理なんですね。

  • Gitは個人でのバージョン管理
  • GitHubはみんなでバージョン管理(もちろん個人利用もできる) 

と言えます。ここまでは理解できたかと思います。

 

実際にGitHubを使ってみる

どのようにバージョン管理をしているか、っていうのは使ってみないと分からないもんです。ですがごめんなさいGitHubへの登録、ログインなどは他の誰かの記事を見て下さい。(めんどくさかった)

僕がここでつまづいたのは、訳のわからない単語たちです。リポジトリ、プッシュ、プルリクエスト、マージ、コミット...

リポジトリ

ここは我慢して受け入れましょう。まず大切なのはリポジトリという言葉。作成するファイルなどの情報を記憶しておく場所です。バージョン管理をしたいファイルなんかに対して記憶場所(リポジトリ)を作成する必要があるんですね。

今まで散乱していたプレゼン資料に、一つの記憶場所を作ってあげて入れるイメージです。

リポジトリには2種類あって

があります。普段作業するのは自分だけのローカルリポジトリです。それを公開したくなったり、みんなで作業するときに共通の記憶場所とするのがリモートリポジトリです。

ローカルリポジトリに入れておいた進捗をリモートリポジトリにUPするイメージですね。

コミット

では自分の生んだ進捗をどうやってリポジトリに記憶させるんでしょうか。コミットしましょう!ローカルリポジトリに登録する行為をコミット(commit)と言います。

コミットすると履歴が識別できる状態時系列上に進捗が上書きされていきます。

また、GitHubではコミットする際にはどのような変更を加えたかメモを追加する必要があります。これで、もうどのファイルが最終版か、どんな変更を加えたか迷いませんね。

インデックスとワークツリー

実は作業の進捗を直接ローカルリポジトリコミットすることはできません。作業の進捗を一旦インデックスと呼ばれる場所に登録(この作業をアッド (add)と言います)してから、インデックスからローカルリポジトリにコミットします。一見無駄なプロセスに見えますが、コミットするファイルを選択できたりとか多分色々メリットがあるからインデックスがあるのでしょう(僕も分かりません!💢)

ついでにGitではみなさんが作業しているディレクトリのことをワークツリーと呼びます。

ワークツリー →add→      インデックス → commit→      リポジトリ

 このようなイメージです。

 

 リモートリポジトリを使う

プッシュ

ローカルリポジトリにある記憶をリモートリポジトリに入れるためにはプッシュと呼ばれる作業が必要です。プッシュによってリモートリポジトリに自分の進捗をアップロードすることができます。 

クローン

リモートリポジトリ内のデータであれば色々な人が利用することができます。つまりみんなでバージョン管理しながら共同作業ができるってことです!GitHubすげえ!

誰かがあげた進捗を利用して自分のローカルリポジトリで作業するためには、データをダウンロードしなくてはなりません。これをクローンと言います。複製を作ってローカルリポジトリに入れるイメージです。(似たようなものにプルというのがありますが、ファイルをアップデートして同期したいときに使います。共同作業するときに内容の衝突を防ぐためですね。)

その他

ブランチとマージ

これも最高に便利なGitの機能だと思います。ブランチは分岐を作ります。マージは作った分岐を結合します。

例えば、作成中のデータに大幅に変更を加えたい場合、コピーをとっておかないと不安じゃないですか?途中で変更はやっぱりやめにしたり、再起不能になってしまったら困ります。

そういう場合にはブランチでコピーを作成します。ブランチしてできたファイルが完成したら、本筋に戻すためにマージします。すると結合されて一つのファイルとなります。

これまであげた各々の操作は全てGitHub上でも出来ますし、ターミナルなどのコマンドラインからも可能です。

まとめ

おおよその概要の理解はできたんじゃないでしょうか?

自分自身もまだよく分かっていないので、知らない機能、GitHubの真骨頂は分からないですが、超初心者のGitHubとはなんぞやっていう疑問を解決出来たら嬉しいです。

それぞれの操作については概要は説明しましたが、使い方なんかは自分でやってみたほうが絶対イイです。

Hello World · GitHub Guides

英語の勉強ついでにこのページの通りチュートリアルを行ってみてください。 

英語から逃げちゃダメ

ではまた。