はじめに

はじめに

Git を使いたい背景

どれが最新かわからない状態

まずははじめに、こちらの画像をご覧ください。

バージョン地獄

コピーや正式なバージョン付けができなかったために、どれが本当の最新なのかがわかりません。

また、次のグラフをご覧ください。

  graph LR;

10[v1.0] --> 11[v1.1];
11 -- コードを整頓 --> 12[v1.2];
11 -- 新機能Aを追加 --> 13[v1.2];

上の v1.2 ではコード整理を、下の v1.2 では新機能Aの追加と、別のことを行っていますが、名前が被っています。

1人で開発している場合は、自分で命名規則を考え、それに則れば特に問題は起こりません。しかし、複数人で開発している場合は命名規則を忘れてしまったり、それを守っていても名前が重複する可能性が生まれます。

進捗の喪失

続いて、次のグラフをご覧ください。

  graph LR;

10[v1.0] --> 11[v1.1];
11 -- コードを整頓 --> 12[v1.2];
11 -- 新機能Aを追加 --> 13[v1.3];
12 -- 新機能Bを追加 --> 14[v1.4];
13 -. 消える -.- 14;

ここでは、別々の人が開発したことによって、片方の作業結果 (新機能A) が本体に統合されることなく、消えてしまいました。

解決策

このような場合に役立つのが、バージョン管理システム Git です。

どれが最新かわからない状態

Git では、main1 (ブランチ) を軸として、開発を進めます。そのため、main が常に最新の開発データになります。

(リーダーが常に最新の開発データを持っているといるイメージです。ただ、Git を利用する場合は、リーダー以外も main を管理することができるので、作業負担の偏りを減らすことができます)

また、それぞれの保存 (コミット) ごとに、順番のない固有の ID が割り当てられます。(例: 7275e5dfbd70293f32042e5c915391ff3e0dd5d9) そのため、バージョン名が被ることはありません。2

(下図は参考。固有 ID は上から7文字だけ表示)

  gitGraph

commit id: "74f78f9"
commit id: "291aeb3"

branch refactor
commit id: "b1bffb6"

checkout main
branch feat/A
commit id: "e5334ac"

checkout main
merge refactor
merge feat/A

(main が中心、refactor がコード整理、feat/A が新機能 A の開発)

進捗の喪失

– 追記 –

まとめ

Git は複数人での開発を、効率的に行える機能を提供します。

他にも様々な機能があり、それらを使いこなすことで、効率的に、安全に開発を進めることができるでしょう!


  1. または master, develop などが利用されます ↩︎

  2. また、ローカルで tag を設定して被った場合は、重複がエラー扱いになるのでそこで気づくことができます ↩︎