チーム開発をしていて、Macのターミナルに
error: Your local changes to the following files would be overwritten by merge: Please commit your changes or stash them before you merge.
と出たので、対処してみた。
##エラーが起きたタイミング
チームで開発しているので、まず
$ cd checkout master
でMacのターミナルにて、マスターへ移動。
次にチーム開発で使っているGithubより
$ git pull origin master
でmasterブランチを最新に更新。そこでエラー文が登場!
error: Your local changes to the following files would be overwritten by merge:
//ここは関係するファイル名が表示される
Please commit your changes or stash them before you merge.
何でだろうと考えつつ、対処法をまとめてみました。
##対処法
エラー文をそのまま、グーグル翻訳してみると、以下のようになりますね。
エラー:次のファイルに対するローカルの変更はマージによって上書きされます:マージする前に、変更をコミットするか、それらを隠してください。
ふむふむ。
コンフリクト、つまり「競合」「衝突」となっているみたい。
対処法として
- 対象ファイルを削除する
- 指摘されたファイルを退避させる
- 強制的にマージさせる
という方法があるようです。
私としては「削除」でもいいかなと思ったのですが、初心者ゆえに不安もあったため、二番目の「一時退避」を選びました。
$ git stash
これで、現在の作業を一時退避させます。stashというコマンドで。
コンフリクトがなくなったと思うので、再度以下のコマンドです。
git pull origin master
はい、エラー文がなくなりました!
わーい!
##まとめ
初学者の場合、エラーが出ると恐怖に陥りますよね...
でも嬉しいことに、先駆者がエラーが出た時の対処法をまとめてWeb上に投稿してくださっています。感謝でしかないですね。
今回ご紹介した方法以外に、良い対処法があるかと思いますので、どうぞご教授ください。
【参考にさせていただいたサイト】
本番環境でpullしたらコンフリクト?解決法3パターン!【Please commit your changes or stash them before you merge】