git入門 ~仕組みを理解する~ 第1回 gitを理解する4つのポイント
2019年1月8日からGitHubのPrivateリポジトリが無料で利用できるようになりましたので、Gitは個人で利用するにも身近な存在になりました。
業務でもgitを利用してファイルの履歴管理を行っている方も多いと思いますが、以下の内容に当てはまることはありますか?
- とりあえず必要そうなgitのコマンドを覚えることから始めた
- これまでSVNを利用してgitのブランチがイメージと何か違う・・・
- staging-area(ステージングエリア)ってどうして必要なの?
- brach(ブランチ)を削除することが怖く感じる
- GitHubを利用した中央集中管理型のファイル管理システムだと思っている
一つでも当てはまるものがあれば、一緒にgitの仕組みから学習していきましょう。
第1回はgitを理解するための4つのポイントについて、まとめました。
ポイント1 GitHubを初めから利用しない
gitは分散型バージョン管理ステムです。
gitの仕組みを理解せずに、いきなりGitHubを利用すると以下のようにGitHubが中央サーバの役割をした場ジョン管理システムであるように錯覚してしまいます。
GitHubを中央サーバと誤認した図
gitには中央サーバという概念はなく個人のPC内だけでも利用可能で、複数人で開発する場合でもGitHubが必須という訳ではありません。
もちろん、共同で開発する場合やローカルリポジトリが破損した場合などに備えてGitHubを利用することは、とても便利な手段ですが、gitの仕組みを理解しないままGitHubを利用することはお勧めしません。
まずは、gitの仕組みを理解してからGitHubを利用するようにしましょう。
はじめはローカルリポジトリのみで学習する
まずは個人のPC内に構築したgitリポジトリを操作することがgitの仕組みを理解する早道です。
実際gitの考え方や操作の大半はローカルリポジトリのみで学習することができます。
ポイント2 リモートリポジトリ=GitHubではない
リモートリポジトリ=GitHubやGitLabではありません。
リモートリポジトリの操作についても、2台のPCを利用したり、自分のPC内にリポジトリを2つ作成することでリモートリポジトリの操作も理解することができます。
リモートリポジトリの学習もまずはGitHubなしで行う
GitHubを利用しない方がリポジトリの情報(commi)をやり取りすること(pushやfetchやpull)をより理解しやすくなると考えています。
複数人での開発を想定した学習は2つのリポジトリで行うことをおすすめします。
以下のようにリポジトリは各端末に存在し、必要に応じて共同開発者とリポジトリの中身(commit)をやり取りすることで、GitHubを利用することなく開発することはできます。
2台のPCでリモートリポジトリを学習する場合
1台のPCでリモートリポジトリを学習する場合
ポイント3 SVN経験者は一度知識を捨てる
中央集中型バージョン管理システムであるSVN経験者は一度SVNの知識を捨てることから始めてください。
私は実際に「SVNの新しいもの」ぐらいのイメージで利用を初めてしまったことが、gitを理解する一番の弊害になってしまったので、同じ過ちを犯す方が少なくなればと思います。
私が考えるSVNの知識を捨てた方がよい理由は分散型バージョン管理システムであることはもちろんですが、それ以外に、以下の理由があります。
gitとSVNで同じ用語やコマンドがあるが実際の機能が全く違う
特に「コミット」や「ブランチ」が当てはまります。
ポイント4 gitはコマンドの学習からはじめない
gitには多くのコマンドがあるためコマンドを操作することから始めると「難しい」と感じてしまいます。
gitはファイルやディレクトリをまとめたcommitについて理解できれば、コマンドは必要に応じて都度調べながらでも問題ありません。
gitコマンドを覚えることよりもgitの仕組みを理解することから始めてみましょう。
まとめ
gitはシンプルなシステムであると考え、はじめは自分のPC内にgitリポジトリを構築し学習することで、仕組みを理解しやすくなります。
次回はgitで最も重要なcommitツリーについて学んでいきましょう。