LoginSignup
4
1

More than 5 years have passed since last update.

状況で使い分けるGit術 後編

Last updated at Posted at 2018-12-25

この記事は JSL (日本システム技研) Advent Calendar 2018 - Qiita 25日目の記事です。(オオトリですなあ。。。)


状況で使い分けるGit術 前編
前半の記事からーー早6ヶ月
(前回の設定で記載されてたP上司一切でてきてなくて吹いた)


Advent Calendarという理由にかこつけて後編です。

前編では

  • コンフリクト時にMergeとRebaseで対応
  • コミットをrebaseでまとめる

について記述しました。
今回は「月君のやらかし事例とその対処」です。

設定

  • 月君 ... 最近調子に乗っており、ミスを犯すのは秒読み。SouceTree崇拝者。
  • A先輩 ... 開発チームメンバーの先輩。すぐ調子に乗る月君を見はさなず見守ってくれるデキる意識高い系。

前提

  • GitFlowを使用している
  • Macでvimを使用している

Mergeでコンフリクト時に、軽率なresetを行い・・・

月君は相変わらず慎重さにかけた実装を行っていました。

月君「さて、じゃあPush前に・・・moon_dev2の内容をMergeしておくか」
スクリーンショット 2018-12-25 10.59.04.png
Tips
SouceTreeからのMergeやRebaseは、対象ブランチの副ボタンクリックで出てくるコンテキストメニューから行えます
スクリーンショット 2018-12-25 10.59.33.png

しかし

スクリーンショット 2018-12-25 10.59.45.png

月君「まじかあ。。。」

〜数十分後〜

月君「あーもうコンフリクト地獄でよくわからん。origin/moon_devのコミットにresetしよう。そうすればもう大丈夫。なかったことにしよう」

スクリーンショット 2018-12-25 11.00.56.png

月君は気づきませんでした。
moon_devブランチのHEADはPushしていなかったことに。
そしてPushしていなかったコミットはかなり重要な変更だったということに。

月君「よし。一旦なかったことにしたぞ。これでコンフリクトとかもきれいさっp・・・」

スクリーンショット 2018-12-25 11.01.48.png

月君「重 要 な 変 更 の コ ミ ッ ト が 消 え て し ま っ た」

〜conflictを、軽率になかったことにしてはいけない〜

月君は焦るあまり、resetの--hardで嫌な記憶を抹消してしまったのです。
そして抹消したのは嫌な記憶のみならず、重要な記憶すらも…

〜そしてA先輩のもとへ〜

月君「かくかくしかじかで、やらかしてしまいました:scream:

A先輩「そろそろやらかすと思っていたよ:sweat:

A先輩「そういうときはreflogでリカバリしよう」

月君「それはいったい!?」

reflogとは個人の環境に保存されている参照ログです。

$ (moon_dev) git reflog

スクリーンショット 2018-12-25 11.38.12.png

参照ログがつらつら出てきました。
なくなってしまった重要な変更コミットも存在しています。

月君「む、重要なコミットは7417cd2だな。」

復元にはresetでHEADを指定します

$ (moon_dev) git reset --hard HEAD@{1}

スクリーンショット 2018-12-25 10.59.04.png

月君「戻ったーーーーーーー!!!」

こうして肝を冷やした月君は、この反省を生かして今後も実力を延ばしていくのでした。


前編後編の事例は実体験だったり。。。
本番masterにpush -fしてCI走ってデプロイされた話も書こうかと思いましたが、
書いてる最中に胃が痛くなったので断念。

ちなみに私は現在の職場でGitを知りました。
それまではエクセルに差分記録して手動Mergeというレガシー通り越して化石な運用でしたね。

今回はストーリー仕立てにしましたが、Gitに関して一番参考にしたQiitaの記事は⇣だと思います
Gitでやらかした時に使える19個の奥義

そんなこんなで2018年アドベントカレンダー終了。
来年もよろしくおねがいします!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1