tanaka's Programming Memo

プログラミングについてのメモ。

PUSH失敗からのリポジトリの操作ミス

WindowsPCとMacの双方で作業していた際に、GitHubへのPUSHに失敗して、色々と試しているうちにリポジトリが混乱した。その原因と対策をまとめる。

原因

不用意なチェックアウト

チェックアウトをすると、ワーキングツリーもあわせて切り替わると勘違いしていた。コミットしていない変更がワーキングツリーにある場合、stash(一時的に退避させる領域)に変更を退避させないと、切り替え先のブランチに変更がマージされてしまう。

チェックアウトする前にコミットすること!

リポジトリが混乱した後の収拾方法

TortoiseGitを利用すると操作しやすい。

  1. サーバからpull
  2. TortoiseGitのログ表示
  3. 差分を見ながら、問題がなくなるコミットを探す
  4. 問題のないコミットを見つけたら、右クリックしてリセット(Hard)
  5. GitHubにpushする際は、強制フラグを設定する

以上で解消した。変更内容を反映する必要がある場合は、リセットではなく、cherry-pickで統合した上でpushする。