gitを使っていて git push
済みでファイルはリモートリポジトリに反映されているものの、反映するサーバー内から git pull origin master
でリモートリポジトリから pull
してこようとしても、エラーでファイルが反映されない場合の対処方法です。
git pull origin master でエラー
リモートリポジトリに git push
済みのファイルをサーバーに反映するため、サーバー内にsshログインして git pull origin master
を実行した結果、以下のエラーが発生しました。
error: Your local changes to the following files would be overwritten by merge:
images/bnr-sample.jpg
Please commit your changes or stash them before you merge.
Aborting
何やら対象のファイルの影響によりエラーで中止となり、 pull
できませんでした。
git checkout で解決
エラーメッセージのとおり、対象ファイルを commit
するか、または stash
でコミットせず退避するでもいいのですが、対象ファイルは上書きできればよく破棄しても問題ないファイルだったため、今回は commit
も stash
もせずに checkout
することで解決しました。
checkout
は異なるブランチに切り替えるコマンドだと思っていたのですが、ブランチ以外にもファイルやコミットも対象となるようです。
Git では、「チェックアウト」はターゲット エンティティの異なるバージョン間の切り替えを意味します。git checkout コマンドは、ファイル、コミット、ブランチの 3 つの異なるエンティティに対して実行されます。
Git checkout | Atlassian Git Tutorial
ということで、対象ファイルに対して checkout します。
git checkout images/bnr-sample.jpg
実行後、 Updated 1 path from the index
と表示され、うまくいったような感じです。
git status
で念の為確認してみると、さっきまでエラーとなっていた対象ファイルは表示されていません。
再度 git pull origin master で無事成功
master ブランチになっているのを確認し、 git pull origin master
を実行。無事にリモートリポジトリから最新情報に変更されました。
参考サイト
- 【Git】ブランチの切り替えとかプルとか出来ないときの対処法 – Qiita
- git pullが失敗して、今までの修正がいらない場合はすべて破棄してしまえばいい。 – /var/www/yatta47.log
ちなみに、FTPで反映していればこのようなエラーは出ませんが、FTPよりもGitによる反映の方が反映ミスや漏れが少ないといったことや、自動で最新内容に反映してくれるといったメリットがあるため、Gitによる反映を行っています。「いつもFTPを使ってファイル反映しているけど、Gitの反映に興味ある」という方は以下をご参考ください。
コメントを残す