Git4 択難易度 応用

push 済みコミットを amend した後 git push が rejected された。理由は?

正答

  1. amend したコミットは push できない仕様だから
  2. コミットメッセージがリモートと重複しているから
  3. ハッシュが変わり、ローカルとリモートの履歴が分岐したから
  4. リモートが読み取り専用になっているから

解説

amend はコミットを作り直すためハッシュが変わり、リモート側の元のコミットがローカルの履歴に含まれなくなる。Git はリモートの履歴を失う push(non-fast-forward)を既定で拒否する。amend 自体が push 不可なわけではなく、push 前のコミットなら通常どおり push できる。解決策は、push 済みなら amend をあきらめて新しいコミットを重ねること。自分だけのブランチなら --force-with-lease で上書きしてもよいが、共有ブランチでは避ける。

参考: git-scm.com

amendpushforce-push

この問題を含む Git のテストを制限時間つきで解く

Gitクイズへ