1
0

More than 3 years have passed since last update.

Git って何?

Last updated at Posted at 2020-01-01

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/

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0