🌐

リモートリポジトリで直接編集してしまった後の対処方法

2025/02/05に公開

Gitを使っていると、リモートリポジトリとローカルリポジトリの状態がずれることがある。例えば、ローカルではなくGitHub上で直接編集した場合、リモートの変更をローカルに反映しないと作業が破綻する。リモートの最新状態をローカルに取り込む方法を整理した。基本的な手順から、競合が発生した場合の対処、強制的にリモートの状態に合わせる方法までまとめてみた。

1. ローカルリポジトリの変更を確認

まず、ローカルリポジトリに未コミットの変更がないか確認する。

git status

もし未コミットの変更があれば、コミットするか、変更を一時退避する(stashを使用)こと。

git stash

2. リモートリポジトリの最新状態を取得

以下のコマンドでリモートの変更を取得する。

git pull origin main

もしくは、ブランチが master の場合:

git pull origin master

もしリモートリポジトリの変更がローカルと競合する場合、マージコンフリクトが発生することがある。この場合、適宜手動で修正する。

3. stashした変更を適用(必要な場合)

stash していた変更がある場合、以下のコマンドで元に戻す。

git stash pop

その他の状況

既にローカルで変更していて、リモートの変更を上書きしたい場合

強制的にリモートの変更をローカルに適用するには、以下のコマンドを使用する。

git fetch --all
git reset --hard origin/main

main の部分を適宜 master に変更する。

⚠️ この方法はローカルの未コミットの変更がすべて破棄されるため注意。


結論

基本的には git pull origin main を実行するだけでリモートの変更がローカルに反映される。競合が発生した場合は手動で解決する。もし強制的にリモートの状態を反映したい場合は git reset --hard origin/main を使用するが、事前にバックアップを取ることを推奨する。

Discussion