手動でgithub上のREADMEなどを修正した後、ローカルでgit pull せずに開発進めてしまった時の対策についてメモ

事象

  1. GitHubで直接編集: GitHubのサイト上でREADME.mdを気軽に更新。
  2. ローカルで開発: その後、PC側でgit pullを忘れて、そのまま今日の開発を進めてコミット。
  3. いざpush!: git push origin main を実行 → エラー発生!

なぜエラーになったの?

原因は、Gitの歴史が「分岐」してしまったからです。

  • GitHub側の歴史: README.mdを編集した新しい歴史
  • PC側の歴史: 今日の開発をした新しい歴史

PCとGitHubで、共通の過去から別々の未来が伸びてしまった状態です。このままでは、どちらの歴史が正しいのかGitが判断できず、pushpullも「どうすればいいか指示して!」とエラーを出してきます。

解決策はこれだけ!

この「歴史の分岐」を解決するコマンドがこちら。

ステップ1:リモートの変更を「マージ戦略」で取り込む

git pull origin main --no-rebase

このコマンドは、「GitHubの変更を取り込んで、PCの変更と合体させてね。その際、両方の歴史を正直に残す"マージ"という方法でお願い!」という明確な指示です。

実行すると、マージコミットのためのエディタ画面が開くことがありますが、何もせず保存して閉じればOKです。

ステップ2:改めてpushする

これで、あなたのPCはGitHubの歴史とあなたの開発の両方を含んだ、最新状態になりました。あとは、もう一度pushするだけです。

git push origin main

今度はスムーズに成功するはずです!

まとめと教訓

GitHubで直接ファイルを編集するのは手軽ですが、その後のpullを忘れがち。もしpushでエラーが出たら、焦らずに以下の手順を思い出してください。

  1. git pull origin main --no-rebase で歴史を一つにまとめる。
  2. git push origin main でGitHubに反映させる。

この2ステップで、大抵の「やっちゃった」は解決できます。


この記事が気に入ったら『目黒で働く分析担当の作業メモ』ご支援をお願いします!

※OFUSEに飛びます


おすすめの記事