zenet_logo

-株式会社ゼネット技術ブログ-

ブランチのチェックアウトができない!? そんなときの解決策

  • git checkoutを実行したらエラー
  • 解決策1つ目:git commit
  • 解決策2つ目:git stash
  • 番外編 git clean

 

git checkoutを実行したらエラー

こんにちは。ゼネットの江積です。

gitにてブランチのチェックアウトをしようと、git checkoutコマンドを実行したらこのようなエラーが

error: Your local changes to the following files would be overwritten by checkout :

原因のファイル名

これは、このままcheckoutするとローカルブランチにあるファイルの変更内容が失われてしまう状況のため起こるエラーです。

 



このようなときはcommit かstashコマンドを実行することで解決できるのでご紹介します。

 

解決策1つ目:git commit

commitコマンドで、邪魔になっているファイルの変更を確定してリモートブランチ(Git)に反映させることで解決できます。

手順は、普段リモートブランチへ反映させる時と同じです。

git add 追加するファイル名

git commit -m "コミットメッセージ"

git push origin ローカルブランチ名:リモートブランチ名

 

 

解決策2つ目:git stash

「リモートブランチに反映はさせたくない」そんな時もあると思います。

そんな時は、stashコマンドで変更内容を退避させましょう。

git stash

上記のコマンドを入力するだけで完了です。

退避させた内容は、git stash listで確認できますし、

git stash applyもしくはgit stash popでブランチに戻すこともできます。

 

 

番外編 git clean

最初に挙げたエラーではなく、以下のエラーが出る場合があります。

error: The following untracked working tree files would be overwritten by checkout:

原因のファイル名

これは、ブランチ内に未追跡(存在するはずがない)ファイルがあるために起こるエラーです。

 

私の場合は、直前にコンフリクトの対応をしている中で、あるはずのない他ブランチのファイルが突然現れたことでエラーが起きてしまいました。

 

このエラーは、 stashで退避、もしくはファイルが必要なければcleanコマンドを使って未追跡ファイルを削除するのもありです。

git clean -f

上記のコマンドを入力することで、現在いるブランチ内の全ての未追跡ファイルが削除されます。

これでブランチの移動が可能になります。

 

stashの場合は、uオプションを使用しないと退避できないので注意です。

git stash -u 

 

 

まとめ

エラーでブランチ移動ができないときは

1. commitで変更内容をリモートブランチに反映

2. stashで変更内容を退避させる

 

参考

http://engineer-memo.goodhead.work/pages/242#title_516