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
は「新しいファイルの追跡を開始する」「ファイルのステージング」「マージ時に衝突が発生したファイルに対する「解決済み」マーク付け」で使います。
今回はすべてのファイルを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できました。
ユーザー名、パスワードも聞かれずにあっさりと...。
めでたしめでたし。