🐣

gitとは何かを社内向けにまとめてみた

2023/12/06に公開

gitってなに?

gitとは、ファイルの変更履歴を管理できるプログラムです。

gitってなにができるの?

細かいことは置いておいて、どんなことができるのかをふんわり説明します。

今までの作業をセーブできる

皆さんはゲームなどで、例えば右の道にも行きたいけど左の道にも行きたいという時は分岐点でセーブをしませんか?
また、何か失敗した時にここまで戻れるようにとセーブすることもあるでしょう。
そのセーブの管理をするのがgitです。

ゲームだといまいち分からないと思うので、もう少し近い例を出しましょう。
例えば以下のような作業をしたとします。

  1. 「鳴かぬなら 殺してしまえ ホトトギス」 という内容のhototogisu.txtを作成
  2. hototogisu.txtの内容を「鳴かぬなら 鳴かせてみせよう ホトトギス」に変更
  3. hototogisu.txtの内容を「鳴かぬなら 鳴くまでまとう ホトトギス」に変更

もし「やっぱり『鳴かせてみせよう』がいい!」となった場合、上書き保存をしていたらもう元には戻せません。
ですが、gitで1,2,3の工程を管理(セーブ)していると、いつでも好きなタイミングのhototogisu.txtに戻すことが出来ます。
gitではこのセーブのことを「commit」と呼びます。その説明は後に。

複数人で安全にファイルを管理できる

先ほどのhototogisu.txtの例をもう少し広げてみます。
もしこのファイルが会社の共有フォルダなどにあって、以下のような作業が行われたとします。

  1. 織田さんが「鳴かぬなら 殺してしまえ ホトトギス」 という内容のhototogisu.txtを作成
  2. 豊臣さんがhototogisu.txtの内容を「鳴かぬなら 鳴かせてみせよう ホトトギス」に変更
  3. 同時期に徳川さんがhototogisu.txtの内容を「鳴かぬなら 鳴くまでまとう ホトトギス」に変更

もしこれが徳川さんが豊臣さんに許可なく上書きをしていたとすると戦になります。
ですが、gitでこの工程を管理していると、徳川さんが変更してセーブをした段階で「ここは他の人が変更したところだけど大丈夫?」と気にかけてくれます。
いらぬ争いも減るというわけです。

実際どうやって使うの?

ここでは、例を使って実際の流れを紹介します。
今年入った新人のあなたは、「詩歌プロジェクト」に配属されました。

1.まずは作業する対象を用意しよう。

詩歌プロジェクトはみんなで「poetry」というフォルダにあるファイルを修正したりするプロジェクトです。
まず、自分の手元に「poetry」フォルダが無い!先輩たちが使っているpoetryフォルダがほしい!
そんな時はまず「git clone」というコマンドを実行しましょう。詳細はこちら


2.いざ開発

2-1 ブランチを確認、移動

あなたは先輩に「poetryフォルダの中にある鳥関連の修正をお願い」と仕事を振られました。
では、その案件の変更を管理する部屋のようなものを作りましょう。この部屋を「ブランチ」と呼びます。
今どこのブランチにいるのかを確認したりする場合は「git branch」というコマンドを実行しましょう。詳細はこちら

また、今いるブランチからどこかに移動したり、ブランチを作る際は「git switch」を使います。詳細はこちら

2-2 ちゃんと作業

あなたが作業をしているブランチに移動したら、ついに作業です!
頑張ってください。
ここでのポイントは、こまめにセーブをするということです。セーブって何?と思うでしょう。次に続きます。


3.gitで変更内容を管理しよう

ここからは、変更した内容をgitで管理するように段階を踏んでいきます。
まず先にざっくりと流れを説明します

3-1 変更内容を見よう。

まず、現在の変更は以下の通りとします。

  • hototogisu.txtの「鳴かせてみせよう」を「鳴くまでまとう」に修正
  • suzume.txtの「オウムの子」を「雀の子」に修正
  • uguisu.txtを新規作成

この内容を確認できるのが「git status」です。詳細はこちら
また、この変更内容が保管されているのがワークツリーです。

ここから、例えば「hototogisu.txtの修正とsuzume.txtの修正は俳句にまつわる修正だから、1つの工程として一旦セーブしよう」とセーブの粒度を決めます。

3-2 インデックスに移動させよう

粒度が決まったら、その変更をインデックスに移動させます。
この移動は「git add」 というコマンドで行います。詳細はこちら

3-3 ローカルリポジトリに移動させよう

現在インデックスに保管されているモノのイメージとしては以下の通り。

  • hototogisu.txtの「鳴かせてみせよう」を「鳴くまでまとう」に修正
  • suzume.txtの「オウムの子」を「雀の子」に修正

このまとまりをローカルリポジトリに移動します。
この移動は「git commit」というコマンドで行います。詳細はこちら
ちなみに、コマンドもcommitですが、移動した塊もコミットと呼びます。(分かりやすくカタカナで表記しています)

3-4 リモートへ送信しよう

現在ローカルリポジトリに保管されているモノのイメージとしては以下の通り。

  • コミット番号~~番 「fix:俳句の修正」

いよいよこれをリモートに送信します。
送信するコマンドは「git push」というコマンドで行います。詳細はこちら

これでセーブができ、かつみんなが見ることができる場所にセーブデータが送信されました。
このような流れを繰り返して作業していきいます。


4 人が作業したものを自分のPCに落としてこよう

ここからは一連の作業とうって変わりまして、あなたが先輩の作業のテストをお願いされたとします。
その時にやるべきは以下の作業です。

  1. ローカルのデフォルトブランチを最新のリモートのデフォルトブランチと同じ状態にする。
  2. デフォルトブランチから新たにブランチを作成する。
  3. リモートにあがっている、テストしたいブランチの内容を落としてくる。
  4. テストする。

ここで「落としてくる」という作業が初めて出てきました。
これは、リモートにあがっている内容を自分のPCに落としてくるということです。
「git pull」というコマンドを使って落としてきます。詳細はこちら
ローカルのデフォルトブランチを最新のリモートのデフォルトブランチと同じ状態にするという作業も、ローカルにリモートを落としてくるということでpullを使います。

便利なコマンド

他にもgitには便利なコマンドがたくさんあります。
以下を見て、こんなものがあるんだということを知っておいて下さい。

Discussion