Gitのトラブル対処まとめ|push取り消し・認証設定・DNSエラー
/ 8 min read
Table of Contents
はじめに
Gitは普段どおり動いている限り意識しませんが、詰まるときは決まったところで詰まります。この記事では、実際に遭遇した対処法をまとめました。
user.name と user.email が未設定と言われる
VSCodeからコミットしようとすると、こう言われることがあります。
Gitの’user.name’と’user.email’を構成していることを確認してください。
エラーの内容どおり、設定すれば解消します。
# ユーザー名$ git config user.name ユーザー名
# メールアドレス$ git config user.email メールアドレスGitHubにCUIからpushする
GitHubはパスワード認証を廃止しているため、**パーソナルアクセストークン(PAT)**を使います。
トークンを発行する
- GitHubの 設定画面 を開く
- 新しいトークンを生成する
- 名前と有効期限を設定する
- リポジトリへの読み書き権限を付与する
- 発行してトークンをコピーする
トークンでpushする
$ git push -u origin mainUsername for 'https://github.com': GitHubのユーザー名Password for 'https://ユーザー名@github.com': ここにトークンを貼り付けるパスワード欄に入力するのはGitHubのパスワードではなくトークンです。
直前のpushを取り消す
方法は2つあり、履歴を書き換えるか、打ち消すコミットを追加するかの違いです。
履歴を残さず取り消す
# 直前のコミットを取り消す$ git reset --hard HEAD^
# 強制pushで反映する$ git push -f origin HEADHEAD^ は「直前のコミットの1つ前」を指します。そこまで巻き戻すことで、直前のコミットがなかったことになります。
履歴を残して打ち消す
共有ブランチではこちらを使います。指定したコミットの変更を打ち消す新しいコミットが作られます。
# 直前のコミットを打ち消す$ git revert HEAD
# 通常のpushで反映できる$ git push origin HEAD他人のリポジトリをクローンして自分のリモートへpushする
クローンしたリポジトリには元のリモート(origin)が設定されているので、自分のリポジトリに向け直します。
# 今のリモートを確認$ git remote -v
# 元のリモートを解除$ git remote remove origin
# 自分のリモートを登録$ git remote add origin 自分のリポジトリURL
# push$ git push -u origin mainremote remove を挟まずに向き先だけ変えることもできます。
$ git remote set-url origin 自分のリポジトリURLcould not resolve host: github.com
WSL2で突然pushできなくなり、このエラーが出ることがあります。
fatal: could not resolve host: github.com名前解決ができていないので、DNSサーバーを明示します。
$ sudo vim /etc/resolv.conf次の行を追加します。
nameserver 8.8.8.8SourceTreeのリモートアイコンにビックリマークが付く
設定 > リモートリポジトリのパスを選択 > 編集を開き、外部サービスとの拡張統合オプションを Generic Account から自分のアカウントに変更すれば消えます。
おわりに
Gitのトラブルは、コマンドの意味を1つずらして覚えていることが原因の場合が多いです。特に reset と revert は指定するコミットの意味が違うので、共有ブランチで操作する前に、手元の適当なリポジトリで一度試しておくと安心です。
