Git「マージする前に、変更をコミットするか、それらを隠してください」と出たら...


チーム開発をしていて、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】