Your branch and 'origin/main' have diverged
概要
ローカルブランチとリモートブランチが分岐し、両方に異なるコミットが存在する状態です。単純なプッシュやプルができなくなります。
エラーメッセージ
Your branch and 'origin/main' have diverged,
and have 3 and 2 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
原因
このエラーは以下の原因で発生します:
- 別の場所でコミット・プッシュ後、ローカルでもコミット: 複数環境での作業
- チームメンバーがプッシュした後、ローカルでコミット: 協働開発
- force push後のプル: 他の人が履歴を書き換えた
- rebaseやamend後: ローカルで履歴を変更した
解決策
1. マージして解決(推奨)
| |
2. リベースして履歴を整理
| |
3. ローカルの変更を破棄してリモートに合わせる
| |
4. リモートを上書き(チームの了承が必要)
| |
状況を確認する方法
| |
よくある間違い
- 確認せずに
--forceを使用してチームメンバーの変更を消す - コンフリクト解決せずにコミットしようとする
- リベース中に
--continueを忘れる
予防策
| |
マージ vs リベースの選択
| 方法 | メリット | デメリット |
|---|---|---|
| マージ | 履歴が保存される、安全 | マージコミットが増える |
| リベース | 履歴がきれい | 履歴が書き換わる、チーム作業では注意 |
関連エラー
参考リンク
関連エラー
Git の他のエラー
この記事は役に立ちましたか?