🤦‍♂️

【git】ブランチ切り替え時にファイルが消えるケース

2024/05/03に公開

ブランチ間の.gitignoreの差でスタッシュもされずにファイルが消えるケースがあったので紹介します。

再現

mainブランチにREADME.mdと.gitignoreがあるとします。

.
├─.gitignore
└─README.md

新しくブランチを作り、README.mdを削除して.gitignoreに追加します。

.gitgnore
README.md

上記をコミットした後に、新しくREADME.mdを作ってからmainブランチに切り替えます。すると、README.mdがスタッシュもされずにmainブランチのREADME.mdに上書きされます。

どうやら、gitの管理対象外になったファイルがブランチの切り替え時に存在した場合、そのファイルに上書きされるようです。存在しない場合は、コミットとして認識されます。
雑なブランチ運用をしなければ遭遇しないと思いますが、ブランチ切り替え時にファイルが消えたら.gitignoreの差分を見てみると良いかもしれません。

復元できる方法or間違っている点があればコメントで教えてください。

Discussion