📖

Githubで強制的にリモートリポジトリから引っ張る

2023/07/15に公開

使用しているPCが複数あるのでGithubで本格的にバージョン管理していくことにした。

会社環境でpushして私物ノートでpullしようとしたがうまくいかなかった。
会社ではbranch officeでpush
ノートではbranch bizでpush
最新をmasterへmergeして適宜pull
ということをやりたい。

bizでmasterからpullしようとしたが以下のエラー

error: Your local changes to the following files would be overwritten by merge:
	demo/src/main/java/com/example/demo/hello/HelloController.java
	demo/src/main/resources/templates/hello.html
Please commit your changes or stash them before you merge.
error: The following untracked working tree files would be overwritten by merge:
	demo/src/main/resources/templates/hello/response.html
Please move or remove them before you merge.
Aborting
	(ファイル名以下略)

ローカルリポジトリとの差異があるのでコミットしないとpullできないよ、追跡中のファイルもどうにかしてということらしい。
masterに最新版があるのでローカルは上書きで構わないのだがそういうことじゃないんですね。

コミットするか以下のコマンドでファイルを待避し解決できるらしい。

git stash

ただ今回は待避ではなく丸々上書きしたい。
cloneでもいいのかもしれないが、今後のためにも上書きを覚えたい。
以下のコマンドを試してみたがやはりpullができなかった。

git reset --hard
git clean -fd

最終的に強制上書きということでfetch & reset --hardで上書きできた。

git fetch origin
git reset --hard origin/master

これはローカルの変更をすべて破棄してリモートリポジトリに完全同期する方法のようです。

強制コマンドは使わず基本的なやり方でできるようになろう。

Discussion