11章の途中で、Git関連の大ハマリを経験したので記します。
起こったこと→途中の苦悩、解決策の流れ で書いていきます。
■起こったこと
1.11章途中でrails tの普通エラー
2.並行してrails tが出来なくなるエラー(spring stop)
3.git reset で巻き戻し
4.10,11章打ち直し
5.git mergeによる競合
6.git pushの権限なし
上記で、だいたい7時間くらいはやられました。
(無事復帰出来た気がするので、これも良しと捉えるしかないのでしょう。)
■苦悩と解決策について
1.普通のディレクトリエラー
Expected /Michael\ Example/ to match "User#account_activati on\n\n, find me in app/views/user_mailer/account_activation.text.er b\n\n". test/mailers/user_mailer_test.rb:12:in `block in <class:Use rMailerTest>'
ser_mailer/account_activation.text.erb を何故か、views/account_activations フォルダの直下においていた (user_mailerの中じゃなく、他のファイルを参照していた)
2.並行してrails tが出来なくなるエラー(spring stop)
Circular dependency detected while autoloading constant AccountActivationsHelper (RuntimeError)
seed.dbが2個あることを発見。
何故かsample_appの中にsample_appが存在した。。
それ削除したらtest出来た。
3.git resetで巻き戻し
2のエラーが原因不明すぎたので、gitで一つ前のところまで全部戻ろうかなと。
$ git reset --soft HEAD^
でresetして、
git reflog // で作業ログを確認する
git reset --hard HEAD@{1} // たいてい1つ前
したが、迷宮入り。
git resetしたので、内容は10章までの内容だが、
何故かaccount_activationなどのファイルは残っている。
↓
git reset,git cloneの仕組みを正式に理解。
どのような戻し方、resetの仕方になっているのか。
git reset 自体で戻れることは戻れるが、
新たに作成したファイルなどはそのまま残り続ける。?
https://qiita.com/fnobi/items/ec036c1b5d7ee5a8517c
4.打ち直し
10.11を一つ一つコピペすることで、
コード自体は解決。
5.git mergeのコンフリクト
プログラミングが競合しており,merge中になるらしい。
sample_app(master|MERGING)という表記。
error: Committing is not possible because you have unmerged files.
hint: Fix them up in the work tree, and then use 'git add/rm <file>'
hint: as appropriate to mark resolution and make a commit.
fatal: Exiting because of an unresolved conflict.
・片方の状態のみを残す方法があるらしい。
自分のコードを優先したい場合
git checkout -ours .
マージした側のコードを優先したい場合
git checkout -theirs
今回はtheirsと思ったが、これでは解決せず。
↓
git status でmerge出来ない箇所を調べ、
一つ一つ解消することに。
(※該当箇所がマークされており、ボタン押すだけで修正可能)
6.権限がなく、git push 出来ない
error: RPC failed; HTTP 401 curl 22 The requested URL returned error: 401
というエラー文
ggってたら英語サイトで、権限がないよ的なコメントが。
公開鍵を作成し直して、解決。
#33参照
http://tusukuru.hatenablog.com/entry/2018/08/29/021651
(このサイトのようにやれば出来る。vimにビビらない。)
---
Rails初めてから、初めての大きなエラーでやや挫けそうになりましたが、
”英語のエラー文を読む抵抗感が減った”
”gitへの知識不足を認識できた”ことが大きな学びです。
RailsTutorialあと3章 駆け抜けて、
早いところマッチングサービス作ります!