プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

GitとGitHubの違いとGitを使うメリット

プログラミングをやっている人ならGitHubというサービスは聞いたことがあると思います。
でもGitHubってOSSとかやる人や業務でチーム開発している人が使うものでしょ?と思っている人もいると思います。

ここでは、個人開発(主に趣味)でもGitやGitHubを使うメリットを解説します。

GitとGitHubの違い

Gitの基礎はLinuxの産みの親であるLinus Torvalsが発明ました。GitとはソースのVersion管理の仕組みです。
一方、GitHubはGitをweb上で使えるようにしたものです。

JavaJavaScriptぐらい違います。

Gitでできること

Gitとは簡単に言えばVersion管理のツールです。
Version管理ができ、変更点管理、過去のコミット(保存したポイント)に戻る、といったことができます。

要するに複数のバックアップポイントを保存しておくことが出来ます。

Gitを使わなければ、大きな変更をするとき「コメントアウトして残しておく」とか、「プロジェクトをまるごとzip圧縮して保管しておく」という方法をとって保存しておく人はたくさんいると思いますが、このようなことをする必要がなくなります。
ただし、残っているのはコミットしたポイントのみです。コミットとは現時点のプロジェクトの状態を保存しておくことです。ロールプレイングゲームセーブポイントに例えられます。

でも、「Gitを使って自分の粗末なコードを公開するのは嫌だな」と思う人もいると思いますが、

Pushしなければこれをローカルのみで行うこともできます。


PushとはGitのサーバー(GitHubなど、リモート、リモートサーバなどとも言う)に変更点を登録することです。
Gitってあの「黒い画面」でやるんでしょ?という人にはGUIのgitツールもあります。Sorcetreeなど。

Sorecetreeの使い方

結局、GUIを使えば比較的ハードルが低くなりそうなのでSorcetreeを使うことにしました。
www.sourcetreeapp.com

Gitのコマンドラインでないとできない動作もあるような気がしますが、それはコミットを取り消すとかレアなケースだけのように思います。
GitとSorcetreeは通常併用します(が私はほとんど使ってない)。
git-scm.com
SorcetreeをインストールするとGitもインストールされているはずです。

すでに、C#のプロジェクトが存在するとして、ある程度開発が進んだ状態からSorcetreeに登録して、以後Version管理をする、という前提で説明します。
また、Sorcetreeのインストールについては他に良質な記事があるのでここでは省きます。

まず、初めにNew tabを開いて、Sorcetreeでプロジェクトを作成します。

f:id:s51517765:20190929105542j:plain
Sorcetreeでプロジェクトを作成

ローカルのフォルダを登録するときは、すでに存在する?とか言われますが、そのまま「はい」を選択します。

f:id:s51517765:20190929105842j:plain
ローカルのフォルダを登録

「リモートが設定されていない」というアラートが出ますが、ローカルのみで使う場合はこのままでも大丈夫です。
f:id:s51517765:20190929110255j:plain

ここから開発を進めていくと、プロジェクトに変更が発生するので、そのとき再びSorcetreeに戻ってくると赤枠のように変更点が表示されます。

f:id:s51517765:20190929110734j:plain
Sorcetree画面
「作業ツリーのファイル」から変更点を記録したいファイル(通常はすべてのファイル)を「インデックスに追加」し、「コミット」します。

通常は、その変更点を適切なコメントを付けます。個人開発では省略も可能。

f:id:s51517765:20190929111340j:plain
コミットメッセージを追加しコミット

「変更をすぐに***にPushする」をチェックすればリモートにも同時に反映されます。(リモートリポジトリを設定している場合のみ)
Pushしなければ、ローカルのみで変更が管理されます。

過去の状態に戻れる

2つ上の図の緑色に囲った部分が変更履歴です。
この中で、「あ、やっぱりさっき消したやつ戻したい!」というときは、過去のコミットをダブルクリックします。
f:id:s51517765:20190929112301j:plain
過去に戻る
なにか難しいことを言われている気がしますが、失敗してもいづれの状態(コミット)にも戻れるのがGit(SorcetreeなどVersion管理ツール)の良いところです。
「戻ったのが失敗だった」と思ったら戻る前に戻ればいいのです。(コミットしてあるところ)

ここで、戻る前のコミットも表示されているはずです。
表示されていなければ「すべてのブランチ」を表示にします。

このとき、Windowsエクスプローラでプロジェクトのフォルダをみると、中身がこのときの状態に戻っています。
Windowsファイルシステムを操作している?というのがなんか気持ち悪いですが、いずれにしても戻れるので慣れましょう。

過去の状態の必要なものと最新の状態の必要なものがある

過去のコミットをブランチとして切り出し、最新の状態にマージする、とかもできます。

まとめ

個人開発でGitを使うポイントを説明しました。
GitとGitHubの違いとGitを使うメリット、GitのGUIツールであるSorcetreeの初歩を説明しました。

参考として以下の2冊を読みました。

基本的には、この↑一冊でGitとGitHubは使えるようになると思います。
Web制作者のためのGitHubの教科書 チームの効率を最大化する共同開発ツール

Web制作者のためのGitHubの教科書 チームの効率を最大化する共同開発ツール

こちら↑の本はSorcetreeについて説明があります。Sorcetreeを前提とするならこちらもいいと思います。
私はSorcetreeを使ってみてからこちらを読んだので重複でしたが、”LGTM” のようなGitHub上の略語についての説明もありました。

どちらでも基本的な説明はあるので、どちらか一冊でいいと思います。

この辺を読んだ後で、この辺に触れると理解が深まります。
employment.en-japan.com

あとは、GitHubもしくはGitで、GitとGitHubの使い方を試しながらその使い方をまとめるというのもいいと思います。
そんなリポジトリを作りました。
github.com

次回以降でSorcetreeをつかってリモートとローカルの衝突が起きたときの解消方法の初歩をまとめようと思います(近日公開予定)。

s51517765.hatenadiary.jp