【git】gitとは?①概念編【初心者向け】

そもそも、gitって何なんだ・・・?

gitとはバージョン管理システム で、主にソースコードを管理する時に使われます。
自分のソースコードを公開したりするgit hubなんかもこれで管理しています。
誰がいつ、どこを、どんなふうに更新したか、変更したかを保存できるシステムです。

どんな感じで使ってるの・・・?

具体的な利用方法を添えて解説していきます。

解説

[master]: リリースされているコード
[develop]: 開発中のコード
[task1] [task2]: タスク毎に開発中 今月までに納品が必要な機能
(それぞれ別々のタスクでtask1は検索機能 task2はログイン機能だとでも思ってください)

最初の状態
[develop] [task1] [task2] [task1 A] [task1 B] [task2A] はすべて同じ状態。
ここから、我々は[task1 A] [task1B] [task2 A]に対して変更を加えて行きます。


=====================時が経ち・・・=====================
[task1 A]の実装が完了しました。[task1 A]を[task1]に取り込みます。

[develop] [task2] [task1B] [task2A] は同じ状態。
[task1] [task1 A]は変更を加えたので[develop] +[ task1 A]ってところでしょうか。


この図では[task1 A]は存在しませんが、ブランチ(タスクを行うためにに作られた空間)としては存在しています。
便宜上取り込まれた状態として扱います。
=====================時が経ち・・・========================
[task1 B]も完了しました。[task1 B]も取り込みます。

これで[task1]が完了しました。そしたら、[develop]に取り込みましょう!

[develop]は[task1]を取り込んだので一番新しい状態。
[task2]、[task2 A]は何もしていないので[古いdevelop]と同じ状態を維持している。


[task1]を[develop]に取り込みました! いいですね!この調子で[task2]も実装しましょう! 
=====================時が経ち・・・========================
[task2 A]ってデカくね?taskを複数に分けて手分けして実装しよう!

[develop]は[task1]を取り込んだので進んだ状態。
[task2] [task2 A] [task2 A △] [task2 A ◯]は何もしていないので

[古いdevelop]と同じ状態を維持している。
=====================時が経ち・・・========================
[task 2 A △] [task 2 A ◯]の実装が進んで行き・・・

[task 2 A ◯]の作業 いらなくね? でもコード的にはそっちが優秀だから・・・良い部分だけ[task 2 A △]に取り込んじゃおう!

[develop]は[task1]を取り込んだので進んだ状態。
[task2]、[task2 A]は何もしていないので[古いdevelop]と同じ状態を維持している。
[task2 A △]は[task A ◯]を取り込んだので現在の[develop]とは別の方向で進んだ状態。

=====================よく考えると・・・========================
「[task 2 A]っていらなくね?[task2 A △]を[task 2 A]って考えればいいじゃん」

最終的に・・・

developに今回リリースに必要な分は取り込めましたとさ。めでたしめでたし。

拙い図で説明してしまいましたが、
要は[task2] [task2 A] [task 2 A △] [task 2 A ◯]には親子関係があるように見えて、実際は何も無い。自由に更新して、自由に取り込んでもらえる、あまり制約がない管理方法です。
だから必要なものが出来たらすぐに取り込めるし、「ごめん明日ライブで休む。 程度進めたからtaskやっといてw」と自分の進捗を反映したブランチを他の人に渡したり、取り込んだりして柔軟にタスクを進める事ができます。

おわりに

個人で使う場合にも「一応ここまで実装したけど、実際に使うかわからん・・・とりあえずコミット(gitでの使う保存的な意味)しとこ。」なんて時に使えます。必要になればその時のソースコードに戻すことが出来るし、不要になればそのまま放置してても問題ありません。特に技術学習中しながらのコーディングに役に立つんじゃないかと思っています。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です