Skip to content

Latest commit

 

History

History
25 lines (14 loc) · 3.89 KB

01_what_is_git.md

File metadata and controls

25 lines (14 loc) · 3.89 KB

Git とはなんぞや

Git は、数ある VCS のうちのひとつです。では VCS とはなんでしょうか。VCS とは、「ヴァージョン管理システム/Version Control System」のことです。VCSがなにかということは、高野将さんが VCS入門 というすばらしい資料を書いてくれています。少なくともこの資料の4章までは読んでおいてください(良い資料なので、情報系のお仕事をやっているひとは全部読んだ方がいいです)。

VCS がどのようなものなのかわかりましたか? Git はこのような役割をしてくれる VCS のうちのひとつである、と理解してください。

Git は分散 VCS

では、数ある VCS の中で、Git はどのような特徴を持った VCS なのでしょうか。"マージ" が賢いとか "ブランチ" (いまはこれらの言葉の意味はわからなくていいです)が軽量であるという特徴もあるのですが、何よりも特徴的なのは、「分散VCS」であるということでしょう。

分散 VCS と言われると「なんのことじゃ」という感じですけれど、簡単に言えば「みんなが手元にそれぞれリポジトリを持っている」ということです。上記の VCS入門 では、「みんなが触るリポジトリ」がひとつあって、個々人はその「みんながさわるリポジトリ」に対して作業コピーの内容を反映させたりしていましたね。でも、Git の場合は、そういう「みんながたったひとつのリポジトリを触る」みたいな感じではなくて、みんながそれぞれ自分の手元に「自分のリポジトリ」を持つことになります。作業コピーに対して行った変更を、「たったひとつのリポジトリ」に反映させるのではなくて、「分散してるリポジトリ」(=手元のリポジトリ)に対して反映させるので、「分散 VCS」です

でも、せっかく「みんなで編集する」のにも便利な VCS なのに、それぞれが自分のリポジトリに対して変更を反映させたりするだけでは、意味がありませんね。自分が行った変更を誰かと共有したり、だれがか行った変更を自分のところに持ってきたりできないと VCS の嬉しさ半減です。

そこで、Git には「このリポジトリにある変更を、そっちのリポジトリに反映してくれない?」とか「そのリポジトリの変更、こっちのリポジトリに取り込ませてよ」みたいな感じで、リポジトリ同士で変更内容を取り込んだりする機能があります。これによって、複数のメンバーで同じコードを触ることができるようになるわけですね。もちろん、このときに競合が起こったりした場合は「あー競合おこっちゃってるからその変更取り込めないわ、ちょっと手元で競合直してから取り込んでもらっていいかい」みたいな感じで Git が教えてくれます。

まとめです。

  • Git を使う場合は(ふつうは)みんながそれぞれ手元に自分用のリポジトリを持つ
  • みんなはそれぞれ自分で行った変更を自分のリポジトリに反映させる
  • 誰かが行った変更を誰かのリポジトリから自分のリポジトリに取り込んだり、逆に自分のリポジトリに行った変更を誰かのリポジトリに取り込んでもらうことで複数人での作業を行う

とりあえず、具体的なことがわからなくても、「ふーん、そんなイメージなんだな」と、そんなふうに理解してください。

next - ひとりでつかう - はじめてのコミット