skip to content
barorin&

Gitのトラブル対処まとめ|push取り消し・認証設定・DNSエラー

/ 8 min read

Table of Contents

はじめに

Gitは普段どおり動いている限り意識しませんが、詰まるときは決まったところで詰まります。この記事では、実際に遭遇した対処法をまとめました。

user.name と user.email が未設定と言われる

VSCodeからコミットしようとすると、こう言われることがあります。

Gitの’user.name’と’user.email’を構成していることを確認してください。

エラーの内容どおり、設定すれば解消します。

Terminal window
# ユーザー名
$ git config user.name ユーザー名
# メールアドレス
$ git config user.email メールアドレス

GitHubにCUIからpushする

GitHubはパスワード認証を廃止しているため、**パーソナルアクセストークン(PAT)**を使います。

トークンを発行する

  1. GitHubの 設定画面 を開く
  2. 新しいトークンを生成する
  3. 名前と有効期限を設定する
  4. リポジトリへの読み書き権限を付与する
  5. 発行してトークンをコピーする

トークンでpushする

Terminal window
$ git push -u origin main
Username for 'https://github.com': GitHubのユーザー名
Password for 'https://ユーザー名@github.com': ここにトークンを貼り付ける

パスワード欄に入力するのはGitHubのパスワードではなくトークンです。

直前のpushを取り消す

方法は2つあり、履歴を書き換えるか、打ち消すコミットを追加するかの違いです。

履歴を残さず取り消す

Terminal window
# 直前のコミットを取り消す
$ git reset --hard HEAD^
# 強制pushで反映する
$ git push -f origin HEAD

HEAD^ は「直前のコミットの1つ前」を指します。そこまで巻き戻すことで、直前のコミットがなかったことになります。

履歴を残して打ち消す

共有ブランチではこちらを使います。指定したコミットの変更を打ち消す新しいコミットが作られます。

Terminal window
# 直前のコミットを打ち消す
$ git revert HEAD
# 通常のpushで反映できる
$ git push origin HEAD

他人のリポジトリをクローンして自分のリモートへpushする

クローンしたリポジトリには元のリモート(origin)が設定されているので、自分のリポジトリに向け直します。

Terminal window
# 今のリモートを確認
$ git remote -v
# 元のリモートを解除
$ git remote remove origin
# 自分のリモートを登録
$ git remote add origin 自分のリポジトリURL
# push
$ git push -u origin main

remote remove を挟まずに向き先だけ変えることもできます。

Terminal window
$ git remote set-url origin 自分のリポジトリURL

could not resolve host: github.com

WSL2で突然pushできなくなり、このエラーが出ることがあります。

fatal: could not resolve host: github.com

名前解決ができていないので、DNSサーバーを明示します。

Terminal window
$ sudo vim /etc/resolv.conf

次の行を追加します。

Terminal window
nameserver 8.8.8.8

SourceTreeのリモートアイコンにビックリマークが付く

設定 > リモートリポジトリのパスを選択 > 編集を開き、外部サービスとの拡張統合オプションを Generic Account から自分のアカウントに変更すれば消えます。

おわりに

Gitのトラブルは、コマンドの意味を1つずらして覚えていることが原因の場合が多いです。特に resetrevert は指定するコミットの意味が違うので、共有ブランチで操作する前に、手元の適当なリポジトリで一度試しておくと安心です。

この記事を書いた人

barorinのプロフィール画像

barorin公認会計士

会計とITの二足のわらじで働く公認会計士です。Pythonを中心に、会計・監査の実務で実際に使っているコードや、Ubuntu・Raspberry Piの設定メモを書いています。