概要
- macOS BigSur 11.4
- Fork Ver 2.7
この記事で解説するのは以下の三つ
・commit
コミット(保存)
・branch
ブランチ (分岐)
・merge
マージ (統合)
また、GitクライアントのForkのスクリーンショットを使用して解説します
Gitの導入やForkのインストール、アカウント連携などは解説しません
あくまでツール上でやりたいことがわかるように解説することが目的なので
現実的にありえないシチュエーションが発生する場合があります
下のよくみるやつは登場しません
$ hogehoge
対象の勇者
バージョン管理って言葉は一応聞いたことあるよ!
でもなんか用語が多くて難しそうだし使うの怖いな
俺は言葉じゃなくてツールの使い方で理解したいんだ!
っていう感じの勇者の皆様
記事を読んだベテラン勇者も認識が間違ってる部分があったらぜひマサカリ魔法お願いします
登場人物
- 勇者(常に独り言を言う)
- 女神(かしこい)
Lv1. ボスの前に着いた!まずはセーブ! commit
教会に呼ばれてなんやかんやあって小遣いをもらって魔王討伐することになった勇者ワイ
街の近くの魔物を倒し少しだけレベルが上がったので
何となく悪い感じのボスを倒しに行くことになった
「ボスの部屋の前についたで」
「教会からもらったFork?っていうツールでセーブするんやったかな?」
「これでcommit
ボタンを押せばセーブ完了ってことやな」
「よし、ワイは天才や」
「サクッとボスを倒してこの街でも救ったろう」
...
「普通にボコボコにされたで…」
「レベルも装備もなんもかんも足らんかったんや…」
Lv2. レベルもあげたいし装備も揃えたい branch
ボスとの格差に嘆く勇者
しかし勇者はPDCAサイクルを回すのに長けたものだったので次の手を打つことになった
「やりたいことはシンプルや、レベルを上げて装備を整える」
「しかしワイ一人では時間がかかってしまう」
「そういえば教会のやつらがbranch
がどーのこーの言ってたような…?」
「みつけた」
「早速branch
を作ってみるで」
「これでレベルを上げと装備を集めで並行作業をする準備が整ったで!」
「ワイはここで分身の術!ワイAとワイBに分身で生み出すで!!」
「真なるワイ(main)はワイAとワイBのcommit
を待つんや!」
level_up ワイA
ワイAはレベル上げのために街の近場の程よいレベルの魔物が出る草原までやってきた
時間が程よく経過し、レベルも程よく上がっていた
「程よく疲れた〜、ホンマここは程よい草原や!」
「いったんここらで成果を確認してみるで」
「ドロップで程よい棒を拾えたのはナイスやった」
「このくらい上げてたらええやろ!前に習った通りcommit
ボタンを押してセーブや!」
「よし、これでセーブできたはずや!」
「ワイBはうまいことやってるやろか…」
collect_equip ワイB
ワイBは装備を集めるために日雇いの仕事を見つけ資金を作り、街の装備屋へと向かった
装備屋の充実したラインナップに心をおどらせ、ワイBは無事に買い物を終えた
「いやーー、最近の装備屋はすごいで」
「特にソードは掘り出しものやったなぁ」
「稼いだ分を合わせても金は減ったけど、移動速度が早くなる靴も買えたし万々歳や!」
「セーブするで!」
「よっしゃ!これでセーブ完了や!」
「ワイAの驚く顔が目に浮かぶようや…!」
Lv3. 分身解除 すなわち合流 merge
疑念
分身を放った真なる勇者ワイはワイA、ワイBがそれぞれも目標を達成したことを確認した
真なる勇者ワイは彼らの成果を受け取ろうと行動を開始する
「ワイは今ボス前でセーブしたところやな」
「まずはワイAの成果をもらうとするで!」
「ワイAのcommit
を選んでmerge into main
これか?」
「確認が出てきたけど、よくわからんからmerge
や!」
「お、おおおお!たしかにレベルが上がってるで!!!」
「しかも程よい感じの棒もいつの間にか手に入ってる!!!」
「…? あれ、ところでここはどこや??」
「さっきまでボスの前にいたはずなのに、見渡す限りの程よい感じの草原に来てしもうてる…」
このとき、世界は崩壊寸前だった
混乱した真なる勇者ワイはそのことに気づくことはできなかった
衝突 conflict
ワイAのレベルアップを受け取った真なる勇者ワイ
レベルアップに喜び、見慣れぬ程よい棒に喜んだのも束の間
見ず知らずの場所に転移してしまっていた
「お、落ち着け」
「何が起きたかは知らないけど同じ手順でワイBの成果もmerge
や!」
「じっくり考えるのはその後や…」
「さっきと表示が少し違う気もするけど…さっきも大丈夫だったしいけるで!」
「Error…やと…」
「な…なにが起きたんや…」
「ワイには何がどうなってるのかもう…」
「Merge Conflict
って書いてるけどなんなんやこれは!」
「うっ、意識が…」
そして解決へ resolve
謎のエラー Conflict によって意識を失った勇者ワイ
いくばくかの時間が経過してようやく目覚めた勇者ワイは二度とGitなど使うものかと怒りにまみれていた
それもそのはず、勇者ワイのいた場所は謎の場所だった
さっきまで持っていたはずの装備も全て失っていた
全てを失ったと感じたその瞬間、謎の世界に光が差し込んだ
『勇者ワイよ、衝突conflict
を解決resolve
するのです』
「な、なんや!今度は何が起きてるんや!」
『落ち着いてください。極めて当たり前のことが発生しているだけです』
『私の言う通りに、焦らず対処するのです。まずは画面を見てください』
『これはワイAの成果とワイBの成果が被ってしまったが故に起こりうる災害、衝突です』
『Merge in Fork
というボタンを押してください』
『レベル以外の部分がconflict
していることが分かりますね?』
『あなたがすべきことは、この左と右の行のどちらを使うかを決めることです』
「そ、そんな事言われてもワイにはどうしたらいいのかわからないんや…」
「なにが正しいのか…」
『今回はふたつのうちどちらがより良いかを基準に選ぶのです』
『今必要なのは選ぶための技術です、何を選ぶべきかはその次に学ぶとよいでしょう』
「そ、それならいけそうや…」
「一行ずつ選択とか、ブロックごとに選択とか色々できて便利や! 割と簡単やぞ!」
『飲み込みが早いですね!それではresolve
しましょう!』
『解決が完了したらcommit
してどう解決したのかを保存します』
「これで、もとの場所に戻れるわけやな…」
「よっしゃ!金もある!装備も強い!これでこの前負けたあのボスなんてボコボコや!」
『それでは勇者ワイよ、あなたのGit人生に幸あらんことを』
こうして勇者ワイは見事ボスを倒し、街を救いました
めでたしめでたし
衝突がそもそも起こらないようにしましょう
教会の一室で映像水晶が発光が止んだ
勇者ワイはGit初心者の勇者に対する基本的な使いかたや注意点を解説するための講座を受けていた
『と、いうようにbranch
を作って作業をするのは便利ですが、同時にconflict
というリスクも発生します』
「妙にワイに似てるやつの映像が流れてて怖いなんてもんじゃないで…」
『あの勇者の失敗はなんだと思いますか?』
「まだよくわかってない機能を使おうとしたからじゃないんか?」
『それもあるかもしれませんが、今回の場合は明確です』
『任された仕事以外の変更も一緒に保存してしまったからです』
「まかされた仕事以外の変更…?」
『こちらをご覧ください』
『レベル上げが目的にも関わらず、レベル以外の変更も保存している』
「でも、敵を倒したらドロップはするし、金だって落ちるんや。仕方ないんやないか?」
『対処法はきちんとあります』
『部分コミットです』
『矢印をなぞるように範囲選択をすると』
「これは…!!」
「そうか!変更がどれだけあっても好きな部分だけを保存できるんや!」
『その通りです。これを使って先程の流れを辿ってみましょう』
『上がったレベルと増えた装備品だけが保存されていますね』
『それではmerge
してみます』
「conflict
が発生してない!!レベルと装備だけが変更されてるで!」
『これが理想のbranch
の使い方です』
『それでは以上で講座を終了にしたいと思います』
『勇者の皆さん、あなた達のGit人生に幸あらんことを』