2014-07-22 PUSH失敗からのリポジトリの操作ミス EGit Git GitHub WindowsPCとMacの双方で作業していた際に、GitHubへのPUSHに失敗して、色々と試しているうちにリポジトリが混乱した。その原因と対策をまとめる。 原因 不用意なチェックアウト チェックアウトをすると、ワーキングツリーもあわせて切り替わると勘違いしていた。コミットしていない変更がワーキングツリーにある場合、stash(一時的に退避させる領域)に変更を退避させないと、切り替え先のブランチに変更がマージされてしまう。チェックアウトする前にコミットすること! リポジトリが混乱した後の収拾方法 TortoiseGitを利用すると操作しやすい。 サーバからpull TortoiseGitのログ表示 差分を見ながら、問題がなくなるコミットを探す 問題のないコミットを見つけたら、右クリックしてリセット(Hard) GitHubにpushする際は、強制フラグを設定する 以上で解消した。変更内容を反映する必要がある場合は、リセットではなく、cherry-pickで統合した上でpushする。