MeWrite Docs

error: failed to push some refs to 'remote'

Gitでリモートにプッシュできない場合のエラー

概要

Gitでローカルの変更をリモートリポジトリにプッシュしようとした際、リモートにローカルにない変更がある場合に発生するエラーです。

エラーメッセージ

error: failed to push some refs to 'https://github.com/user/repo.git'
hint: Updates were rejected because the remote contains work that you do not have locally.
hint: This is usually caused by another repository pushing to the same ref.
hint: You may want to first integrate the remote changes (e.g., 'git pull ...') before pushing again.

原因

  1. リモートに新しいコミットがある: 他の人がプッシュした
  2. 別のブランチからプッシュした: 同じリモートブランチに複数人がプッシュ
  3. GitHub上で直接編集: WebUIでファイルを編集した
  4. force pushの履歴不整合: 誰かがforce pushして履歴が変わった
  5. マージリクエスト: PRがマージされてリモートが更新された

解決策

1. pull してからpush(最も一般的)

1
2
3
4
5
6
7
8
9
# リモートの変更を取り込む
git pull origin main

# コンフリクトがあれば解決
git add .
git commit -m "Resolve conflicts"

# プッシュ
git push origin main

2. fetch + merge

1
2
3
4
5
6
7
8
# リモートの情報を取得
git fetch origin

# マージ
git merge origin/main

# プッシュ
git push origin main

3. fetch + rebase(履歴をきれいに保つ)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# リモートの情報を取得
git fetch origin

# リベース
git rebase origin/main

# コンフリクトがあれば解決
git add .
git rebase --continue

# プッシュ
git push origin main

4. pull with rebase

1
2
3
4
5
# リベースしながらpull
git pull --rebase origin main

# プッシュ
git push origin main

5. 強制プッシュ(危険)

1
2
3
4
5
6
7
8
# 警告: リモートの履歴が上書きされる
# 他の人の変更が失われる可能性あり

# 自分のブランチでのみ使用
git push --force origin feature-branch

# より安全なforce-with-lease
git push --force-with-lease origin feature-branch

6. 新しいブランチとしてプッシュ

1
2
# 現在の変更を新しいブランチとしてプッシュ
git push origin HEAD:new-feature-branch

7. 状態の確認

1
2
3
4
5
6
7
# ローカルとリモートの差分を確認
git fetch origin
git log HEAD..origin/main --oneline  # リモートにあってローカルにない
git log origin/main..HEAD --oneline  # ローカルにあってリモートにない

# グラフで確認
git log --oneline --graph --all

コンフリクト解決

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# pullまたはmerge後にコンフリクトが発生した場合
git status  # コンフリクトファイルを確認

# ファイルを編集
# <<<<<<<, =======, >>>>>>> マーカーを削除して内容を調整

# 解決をステージング
git add <resolved-files>

# merge の場合
git commit -m "Merge remote changes"

# rebase の場合
git rebase --continue

よくある間違い

  • pullせずに何度もpushを試みる
  • main/masterブランチでforce pushする
  • コンフリクトを解決せずにcommitしようとする

関連エラー

参考リンク

Git の他のエラー

最終更新: 2025-12-13