プログラミングをやっている人ならGitHubというサービスは聞いたことがあると思います。
でもGitHubってOSSとかやる人や業務でチーム開発している人が使うものでしょ?と思っている人もいると思います。
ここでは、個人開発(主に趣味)でもGitやGitHubを使うメリットを解説します。
GitとGitHubの違い
Gitの基礎はLinuxの産みの親であるLinus Torvalsが発明ました。GitとはソースのVersion管理の仕組みです。一方、GitHubはGitをweb上で使えるようにしたものです。
JavaとJavaScriptぐらい違います。
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でプロジェクトを作成します。
ローカルのフォルダを登録するときは、すでに存在する?とか言われますが、そのまま「はい」を選択します。
「リモートが設定されていない」というアラートが出ますが、ローカルのみで使う場合はこのままでも大丈夫です。
ここから開発を進めていくと、プロジェクトに変更が発生するので、そのとき再びSorcetreeに戻ってくると赤枠のように変更点が表示されます。「作業ツリーのファイル」から変更点を記録したいファイル(通常はすべてのファイル)を「インデックスに追加」し、「コミット」します。
通常は、その変更点を適切なコメントを付けます。個人開発では省略も可能。
「変更をすぐに***にPushする」をチェックすればリモートにも同時に反映されます。(リモートリポジトリを設定している場合のみ)
Pushしなければ、ローカルのみで変更が管理されます。
過去の状態に戻れる
2つ上の図の緑色に囲った部分が変更履歴です。この中で、「あ、やっぱりさっき消したやつ戻したい!」というときは、過去のコミットをダブルクリックします。なにか難しいことを言われている気がしますが、失敗してもいづれの状態(コミット)にも戻れるのがGit(SorcetreeなどVersion管理ツール)の良いところです。
「戻ったのが失敗だった」と思ったら戻る前に戻ればいいのです。(コミットしてあるところ)
ここで、戻る前のコミットも表示されているはずです。
表示されていなければ「すべてのブランチ」を表示にします。
このとき、Windowsのエクスプローラでプロジェクトのフォルダをみると、中身がこのときの状態に戻っています。
Windowsのファイルシステムを操作している?というのがなんか気持ち悪いですが、いずれにしても戻れるので慣れましょう。
過去の状態の必要なものと最新の状態の必要なものがある
過去のコミットをブランチとして切り出し、最新の状態にマージする、とかもできます。まとめ
個人開発でGitを使うポイントを説明しました。GitとGitHubの違いとGitを使うメリット、GitのGUIツールであるSorcetreeの初歩を説明しました。
参考として以下の2冊を読みました。
いちばんやさしいGit&GitHubの教本 人気講師が教えるバージョン管理&共有入門 (「いちばんやさしい教本」シリーズ)
- 作者: 横田紋奈,宇賀神みずき
- 出版社/メーカー: インプレス
- 発売日: 2018/12/14
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
Web制作者のためのGitHubの教科書 チームの効率を最大化する共同開発ツール
- 作者: 塩谷啓,紫竹佑騎,原一成,平木聡
- 出版社/メーカー: インプレス
- 発売日: 2014/10/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
私はSorcetreeを使ってみてからこちらを読んだので重複でしたが、”LGTM” のようなGitHub上の略語についての説明もありました。
どちらでも基本的な説明はあるので、どちらか一冊でいいと思います。
この辺を読んだ後で、この辺に触れると理解が深まります。
employment.en-japan.com
あとは、GitHubもしくはGitで、GitとGitHubの使い方を試しながらその使い方をまとめるというのもいいと思います。
そんなリポジトリを作りました。
github.com
次回以降でSorcetreeをつかってリモートとローカルの衝突が起きたときの解消方法の初歩をまとめようと思います(近日公開予定)。