GitHubで初push

Gitをしっかり学ぼう、という熱が出てきたので、ProgateでGitのレッスンを受けました。

「Gitの環境構築をしよう!」というコラムでGitHubの使い方が書かれていて、せっかくなので制作中のHugoサイトをGitHubで管理しようと思いました。

サイトに新しくプラグインを入れたり、新しいものの導入の際は、マニュアル通りに進めるのが失敗しない道筋です。
いきなり2段飛ばしで導入してあれ動かない??という経験を何度もしていますが、今回もやってしまいました。
つまづいた部分も記録します。

ちなみに私、GitHubはアカウントはあるものの、ほぼ使用経験ゼロです。
せいぜい人様のソースをダウンロードするぐらいです。 これからがんばろう...。

コマンドラインでGit

現在Sourcetreeを使っています。Progateはコマンドラインで紹介されていたので、gitコマンドを覚えるいい機会でした。

ローカルにあるHugoサイト(この時点では「test」フォルダに入れています)をローカルリポジトリとし、GitHubにpushするまでの経緯です。

Gitのインストールの確認

git --version

git version ***と出てきたのでインストール済みでした。
(別の何かをインストール時にgitも一緒にインストールされていたような)

Gitのユーザー名とメールアドレスの設定

git config --global "ユーザー名"
git config --global "メールアドレス"

ちなみに --global というオプションを調べると、gitのconfig(設定)がユーザーの範囲で適用されるそうです。

--system でシステム全体、オプションなしでリポジトリの範囲で適用されるユーザー名、メールアドレスになります。

システム → global(ユーザー)→ local(リポジトリ
の順でそれぞれのconfigファイルを見て、あれば設定値が上書きされていきます。
優先度が最も高いのは個別のリポジトリに設定されたconfigになります。

参考:
Git - Git の設定

GitHubのアカウント作成、ログイン

アカウントがあるので私の場合はログインするだけです。
二段階認証(2要素検証)で設定されているので、ワンタイムパスワードを使ってログインしました。

GitHubにリモートリポジトリ作成

メニューバーの「+」→「New repository」
→「Repository name」にプロジェクト名を入力("hugosite"と入力)
→「Create repository」ボタン

でできました。中身はまだ空です。
ここにローカルのファイルをpushしたいです。

ローカルリポジトリの初期化

cd コマンドでhugoサイトのあるフォルダまで移動します。

そのフォルダ以下をGit管理する

git init

すると、そこに .git フォルダが作られます。リポジトリを管理するのに必要なファイルが入っています。

push先のリモートリポジトリの設定

あらかじめGitHubリポジトリのURLをコピーしておきます。

リモートリポジトリの追加

git remote add origin <URL> 

origin はリモート名です。一般的にoriginが使われます。
<URL> は先程コピーしたリモートURLになります。
先程GitHubで「hugosite」と入れた「Repository name」に合わせなくて良いのだろうか、と疑問を持ちましたが、originがよさそうです。

Gitでよく使う「origin」って何?わかりやすく説明します - Reasonable Code

originとは リモートリポジトリのアクセス先に対してGitがデフォルトでつける名前です。

意識していないうちに自動的に origin と付いている場合もあることから、合わせたほうがいいという印象を受けました。むしろオリジナルなリモート名をつけられたら困惑しそうです。

このリモートリポジトリの追加の際にorigin とリモートURLが紐付くというのは覚えておきたいです。

ファイルを追跡対象にする、ステージングする

git add .

git add は「新しいファイルの追跡を開始する」「ファイルのステージング」「マージ時に衝突が発生したファイルに対する「解決済み」マーク付け」で使います。

Git - 変更内容のリポジトリへの記録

今回はすべてのファイルをpushしたいので引数を git add . としました。一応うまくいったと思います。

git add -u と git add -A と git add . の違い | note.nkmk.me

コミットする

git commit -m "コミットメッセージ"

-m オプションでメッセージを付けられます。
かっこよく英語でメッセージ残せるようになりたいです(わかりやすさ重視で日本語)。

プッシュする

git push origin master

エラー!

上記の通りpushすると、まずGitHubのユーザー名を聞かれました。
さらにパスワードを聞かれました。
すると、

remote: Invalid username or password.
fatal: Authentication failed for 'https://github.com/ユーザー名/hugosite.git/'

と出ました。認証されなかったようです。

試したこと

Gitのユーザー名とGitHubのユーザー名をあわせる

Gitの設定でユーザー名を登録しましたが、そこがGitHubと合っていないからなのかも?と思い、git config --global "ユーザー名" で設定し直しました。

...結果ユーザー名は関係ありませんでした。

ちなみに、デフォルトではGitのユーザー名でコミットすることになるそうです。

$ git push した際に、GitHub のアカウント名で push するには - poyopoyoのブログ

ローカルリポジトリのフォルダ名とGitHubリポジトリ名をあわせる

結果同じじゃなくても大丈夫でした...SourceTreeでもそうじゃないか...。

ここはGitHubの方の「Repository name」を変更し、追加したリモートリポジトリを一度削除してから git remote add origin <URL> をやり直しました。

GitHubリポジトリ名の変更:
該当するリポジトリのページの「Settings」タブより。

登録されているリモートリポジトリの確認:

git remote -v

リモートリポジトリの削除:

git remote rm origin

git remote add を取り消す方法 - Qiita

なお、リモートリポジトリの再登録をしても、git add . をやり直す必要はありませんでした。

本日のつまづき

GitHubを普通に使われている方にとっては常識なのかもしれません。

二段階認証(2要素検証)の設定ではHTTPS接続でpushできない

下記の通り、可能ではあるようです。

Githubで2段階認証を設定しhttpsリポジトリにpushする - hatappi.blog

しかし特別こだわりはないので、SSHのURLを使って無事pushできました。
ユーザー名、パスワードも聞かれずにあっさりと...。

めでたしめでたし。