記念すべき初投稿です。
僕は今、Swiftの勉強をしており、やっと1つのアプリを作ることができました。まぁただの四則計算しかできない電卓アプリですけど...。それでさっさとGitHubとやらにファイルをアップロードして、次のアプリ制作に取り掛かろうと思ったのですが、結果的にファイルをアップロードするまでに4時間、沼にハマってました。マジで腹立つ。
今、プログラミングを勉強している初心者エンジニアの方達には、こんなしょうもないことで時間を食って欲しくないので、共有したいと思います。もし間違っていることを書いていたら、びしばしとご指摘ください。
沼にハマるまでの道筋
僕は、GitHubにファイルをアップロードするやり方がわからなかったので、初心者用:GitHubにファイルをアップロードする方法(超基本)を見て、手順通りにやってみたのですが、最後の
git push -u origin master
を実行したら、
Username for 'https://github.com': hoge-user
Password for 'https://hoge-user@github.com':
というのが出てきたので、「こんなのあるなんて聞いてないぞ」とか思いながら、GitHubのユーザー名とパスワードを入力して実行。
remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/hoge-user/repository-name.git/'
というのが出てきて、まだ僕は初心者なのでこの2行は成功の合図だと思い、意外と簡単だなとか甘いこと考えてたら、まぁ〜何回リロードしてもアップロードされない。
原因
原因を調べたら、これは2段階認証というものだとわかりました。さらに、
Username for 'https://github.com': hoge-user
Password for 'https://hoge-user@github.com':
ここでの2行目のパスワードはGitHubに登録した時のパスワードではなく、personal access tokenという別のパスワードが必要なんだそうです。そんなんわかるか!
1行目のユーザー名は普通にGitHubのユーザー名を入れます。
personal access token入手方法
特に難しいことはなく、personal access tokenの作成方法の通りにやっていけば、問題ありません。
8の項目なのですが、なんかチェックをつけたり、外したりしてて、あまり意味がわからなかったので、僕は1番上の repo というものだけにしかチェックをしなかったのですが、問題なくアップロードできたので大丈夫だと思います。
この8の項目でなにをしているのかわかる方いらっしゃいましたら、ご教授いただけるとありがたいです!
あとは、personal access tokenをコピーして、2行目のパスワードのところに貼り付けて実行するだけです。そうすると、なんだかさっきのより成功の合図感がありますよね?
余談
こんな自慢げに記事を書いてますが、この情報に行き着くまでに先ほども書いたように、4時間もかかりました。まず僕は、自分が打っているパスワードが間違っているのではないかと、何回も試し、それで1時間。次はまた同じように、git initからやり直していたら、最初に実行した時とターミナルの処理結果がなんか違うと気づいたので調べてみたら、リポジトリの履歴の初期化を行うと良いらしく、Gitでリポジトリの履歴を初期化する方法を紹介!という記事に出会い、さらに1時間。しかし、これでもうまくいかなく、また調べてみたら、ターミナルでVimというものをいじれば、2段階認証をしなくて済むという記事(githubを二段階認証に変更後に起こるエラーの対処方法)を見て、ここで初めて2段階認証を知り、また1時間。やっとここで解決の兆しが見えたところで、Vimってなんか普通に文字が打てないみたいで、わからなくなって強制終了したらスワップ?みたいなよくわからないのですが、ターミナルによるエラーいじめに遭い、それを克服し、Githubの2段階認証入れたらpushできなくなった人へに出会い、解決しました。