LoginSignup
2
1

More than 3 years have passed since last update.

【Git】masterブランチを削除した世にも恐ろしい話〜答えは英語の中に〜

Posted at

オリジナルアプリを作って今日で3日目。
要件定義をしっかりしたつもりだったがあれやこれやと出てきてしまい、
「あ、これもやらなきゃ」
「あれ?スペルミス」
「あれ?ここどうしたらいいんだっけ?」
こんなことの連発。
こまめにcommitしなければいけないと思いつつ作業ブランチのことをやっていて、他のブランチに戻る、そんなことを繰り返していてわけがわからなくなってしまったので、
「一度マージし終わっているブランチを削除しよう!」
そう思いついたのが地獄の始まりじゃったそうな・・・

やっちゃったこと

% git branch -D master     

「記事を見ながらやった。なぜこうなってしまったのかはわからない。後悔はしている。」
(プライバシー保護のため音声を加工してあります

masterブランチって消えるんですね。恐ろしいよ。
その後、下記コマンドでreflogを抽出

% git reflog
                   ⬇️⬇️⬇️以下結果⬇️⬇️⬇️

0422208 (HEAD -> master) HEAD@{0}: checkout: moving from ユーザー管理機能 to master
444f2b7 (origin/ユーザー管理機能, ユーザー管理機能) HEAD@{1}: checkout: moving from master to ユーザー管理機能
0422208 (HEAD -> master) HEAD@{2}: checkout: moving from ユーザー管理機能 to master
444f2b7 (origin/ユーザー管理機能, ユーザー管理機能) HEAD@{3}: checkout: moving from master to ユーザー管理機能
0422208 (HEAD -> master) HEAD@{4}: checkout: moving from ユーザー管理機能 to master
444f2b7 (origin/ユーザー管理機能, ユーザー管理機能) HEAD@{5}: checkout: moving from master to ユーザー管理機能
0422208 (HEAD -> master) HEAD@{6}: checkout: moving from ユーザー管理機能 to master

〜以下略〜

出てきたHEADの表示を確認し、該当の数字を入力

% git branch master HEAD@{21}       

ザオリク成功。やったね!



そして時は流れ、新たなブランチでの作業が終わった時に事件は起こった。
コミット→プッシュ→
Delete Branchする前にmasterに反映されているか確認するか・・・
・・・あれ?
・・・おかしいな
・・・Fetch Origin、ん?
・・・なんでViewファイルが更新されてないんだ?
え?!他のファイルも更新されてない!なんで?!
Fetch Originすると

748108df3a83983d5d6af2bdd6af5266.png

Newer Commmits on Remote

もうコミットされてるよ!と怒られた。
え、どこに?反映されてないんだけど・・・
確認するとこんな状態。

% git branch -a  

* master
  テーブル新規作成
  ユーザー管理機能
  remotes/origin/master
  remotes/origin/テーブル新規作成
  remotes/origin/ユーザー管理機能

remotesあるじゃない!なんで反映されないのかわからない。
ここで2時間ぐらいハマる。
復活の呪文がうまくいってなかったのか?あれはザオリクじゃなくてザオラルだったのか?
そんなことを考えながらどうにもこうにもうまくいかなくなってエラー文で検索をかけて出てきた英語の記事を読む。

どうやらローカルリポジトリのmasterブランチにトラッキングブランチが設定されていないことで出るエラーらしい(ちょっと何言ってるかよくわかんない
リポジトリのクローンを作成することで回復するとのこと。

感覚としては削除しちゃったから完全な状態でmasterブランチが復活してなかったよ!ってこと?
とりあえずやってみる。

% git branch -u origin/master

これで見事にpullできるようになりました!ホッとした・・・
色々調べたんですが「-u」コマンドってどういう意味なのかわかりません。
何をしてくれているコマンドなんでしょうか?
remotes/origin/master
ってリモートブランチのことだと思ってましたけど違うんですね。
何回か読んだけどめちゃくちゃ難しい。
まだまだわからないことがいっぱい。やりがい。

参照させて頂きました

ありがとうございました。

2
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
2
1