🌐
リモートリポジトリで直接編集してしまった後の対処方法
Gitを使っていると、リモートリポジトリとローカルリポジトリの状態がずれることがある。例えば、ローカルではなくGitHub上で直接編集した場合、リモートの変更をローカルに反映しないと作業が破綻する。リモートの最新状態をローカルに取り込む方法を整理した。基本的な手順から、競合が発生した場合の対処、強制的にリモートの状態に合わせる方法までまとめてみた。
1. ローカルリポジトリの変更を確認
まず、ローカルリポジトリに未コミットの変更がないか確認する。
git status
もし未コミットの変更があれば、コミットするか、変更を一時退避する(stash
を使用)こと。
git stash
2. リモートリポジトリの最新状態を取得
以下のコマンドでリモートの変更を取得する。
git pull origin main
もしくは、ブランチが master
の場合:
git pull origin master
もしリモートリポジトリの変更がローカルと競合する場合、マージコンフリクトが発生することがある。この場合、適宜手動で修正する。
stash
した変更を適用(必要な場合)
3. stash
していた変更がある場合、以下のコマンドで元に戻す。
git stash pop
その他の状況
既にローカルで変更していて、リモートの変更を上書きしたい場合
強制的にリモートの変更をローカルに適用するには、以下のコマンドを使用する。
git fetch --all
git reset --hard origin/main
main
の部分を適宜 master
に変更する。
⚠️ この方法はローカルの未コミットの変更がすべて破棄されるため注意。
結論
基本的には git pull origin main
を実行するだけでリモートの変更がローカルに反映される。競合が発生した場合は手動で解決する。もし強制的にリモートの状態を反映したい場合は git reset --hard origin/main
を使用するが、事前にバックアップを取ることを推奨する。
Discussion