Gitについて人に説明する必要があった時にまとめたメモ。
不正確な部分があるが、わかりやすくを心がけてまとめたもの。
(技術的な仕組み・操作・用語などの説明は無し。)
参考サイト
わかりやすそうなサイト。
【絶対理解できる】Gitとは?特徴やできることまとめ!
【初心者向け】Gitってなに?①まず流れを理解する(コードなし)
#何をするもの?
- プログラム等のファイル一式を置いておく場所(サーバー上のシステム)。ファイルを修正したらどんどん最新のものに上書きしていく。
- 複数人のチームで何か(プログラムでもそれ以外でも)を制作する場合や、他の人にファイルを渡したい時に、ファイルを共有できる場所。
- クラウド(インターネット上)のGitにファイルを置いておけば、複数の場所を移動して開発する人にとっては、どこからでも自分のファイルにアクセスできる。
#共有フォルダーやGoogleドライブ等でファイルを共有するのと、何が違う?
###1. いつ、誰が、どのファイルに、どんな変更をしたかの変更履歴が、全て自動で記録される。
「いつ」「誰が」「どのファイルに」「どんな変更を」「どんな目的で」したかという、変更の 5W1H(?) は、自分の変更を細かくメモしているようなマメな人でない限り、どんどん忘れ去られていく。
Gitにファイルを置くと、「いつ」「誰が」「どのファイルに」「どんな変更を」の部分は、自動で、正確に記録される。
ファイルの数、ファイルの更新回数、更新に関わる人数がどんなに多くても、正確に記録してくれる。
「どんな目的で」の部分は、ファイルの変更をGitに反映(COMMIT)する時に出てくる画面で、それをコメントで書いておける。
~テキストデータの場合だけ、「どんな変更を」の自動記録ができる ~ |
---|
「どんな変更を」の自動記録は、テキストデータ(Windowsの「メモ帳」で見れる文字のデータ)限定。 Officeファイルや画像ファイルなどは、「いつ」「誰が」「どのファイルに」の記録のみで、具体的な変更内容は記録されない。 Gitは、自動で、全てのファイルの中身を解析し、前回との変更内容を自動で見つけ出して記録してくれるのだが、Officeファイルや画像の中身は解析できないため。 それらのファイルの場合、変更者が自分で、Gitに反映(COMMIT)するときのコメントで書いておく。 |
###2. 過去の特定の時点のファイルの状態を戻すことが、簡単にできる。
どんなささいな変更をしても、そのたびに裏で自動でバックアップが作られる。そのため、プログラムにエラーが発生した時、エラー発生前に戻したい時がよくあると思うが、それが簡単にできる。
(これは、テキストデータ限定でなく、どんなファイルでもバックアップが作られる)
ファイルの変更履歴が必要ないデータや、ファイル数が少なくて、自分で何を変更したか全部覚えておけるような場合は、Gitを使わなければならない必然性は無い。 ツールの環境構築や、使い方を覚えるのに、それなりの時間的コストはかかるため。
誰が使う?
たぶん、こんな人達が、Gitにプログラムを置いているのだろう・・・。
-
複数人で、ある程度の規模のプログラムを開発するチーム
- チーム開発の手間を減らすためや、トラブル回避のために使う。
-
IT業界に就職しようとしている人
- 就職先で使う可能性が高いので、学習しておくために使う。
- 自分が作成したプログラムのソースコードを、採用担当者にすぐ渡せるよう、クラウドのGitに置いておく。Gitが使える証明にもなる。
-
プログラム技術者の情報共有
- プログラムに関する知識を、誰かと共有・情報交換するために使う。
上のリンクをはっているサイトによると、最近では、記事のライターさんなどにも使われているとの事。
#もしGitが無かったら?
Git(バージョン管理システム)が無かったら、開発者の人数が多いプログラム開発は、たぶんこうなってる・・・。
-
エラーが起きたらすぐ戻せるように、ファイルを修正する前には必ずコピーして、ファイル名に日時をつけて(「sample_20191101100331.java」みたいな)バックアップしておくことが推奨される。
そのうちに、日時のついたコピーデータだらけになる。コピーデータをいちいち作ったり管理するのも大変。 -
情報共有のため、「いつ」「誰が」「どんな変更を」「どんな目的で」修正したかのコメントを、どこか(ファイルの先頭部分や、変更箇所の近辺など)に書くのが必須ルールになる。そのうちにプログラムがコメントだらけになる。
それでも、誰かの変更を、他の人が消したり安易に変更してしまうことが頻発する。 -
上書きのトラブル
AさんとBさんが同じファイルの別の箇所を修正した場合、Aさんが先に共有フォルダーに自分の修正ファイルを置いた後、Bさんが誤って上書きすると、Aさんの修正が消えてしまい、戻せなくなったり。
#Gitの種類
###(1) クラウド(インターネット上)のGit
有名どころとしては以下の2つ。
GitHub
世界中の人々が自分の作品(プログラムコードやデザインデータなど)を保存、公開することができるようにしたウェブサービス。情報共有のためによく使われる。
無料コースだと、全てのデータが世界中に公開される。有料コースにすれば、自分だけの非公開にすることもできる。
GitLab
GitHubの類似サービスだが、無料で、非公開リポジトリを作成できるのが特徴。(リポジトリ:ファイルの置き場所)
・・・と思ったら、GitHubでも、非公開リポジトリを使えるようになったみたい。ただし機能制限はあるみたい。
参考サイト:GitHubが無料でプライベートリポジトリを無制限に作れるようになったぞ☆
###(2) 社内や個人PCに構築したGit
社外に公開できないプログラムなどを置く。
クラウド上だと、ネットワーク障害やGitのサービス側の障害で、使えなくなる事があり得るので、その対策にもなる。
また、自分のスキルアップのために、Gitサーバーを構築してみる人もいる。
その他参考に見たサイト
https://blog.sixapart.jp/2014-03/mttips-02-what-is-git.html
http://www.startup-git.com/beginners/git-merit/