4486


例えばリモートリポジトリにpushした後にうっかり git commit --amend や rebase
してcommitのhashが変えてしまった場合は仕方がなくpullするか、git push -f
するなどあまりgitの使い方的に良くない状態にしてしまう事をする羽目になってしまうと思います。

このようなケースの時の対処法で例えばgit commit
--amendやrebaseを取り消すなどリポジトリを上記のような状態にせずに解決する方法はありますか？


CC BY-SA 3.0
2015-01-13T06:31:32.040
4483
2015-05-15T11:31:31.463
2015-05-15T11:31:31.463
4041
4041
question
git
git push -f 以外で git のリモートリポジトリのコミットログを編集する方法


git commit --amend や rebase を取り消してしまって良いのであれば、例えば `git reset --hard
origin/master` のように [resetコマンド](http://git-scm.com/docs/git-reset)
を使って現在のブランチをリモートレポジトリのmasterに戻してしまえば commit --amend, rebase はなかったことになります。

もし手元で行っているまだコミットしていない変更を失いたくないということであれば、`\--soft` あるいは `\--mixed`
でワーキングツリーを維持しつつ `HEAD` を `origin/master` に戻してからコミットすればよいかと思います。もし、`push`
の後に行った `rebase` (`commit --amend`) よりも前のコミットを失いたくないということであれば、 `git reset
--hard ORIG_HEAD` で `rebase` の直前のコミットの状態に戻ることもできます。


CC BY-SA 3.0
2015-01-13T07:19:50.553
4486
2015-01-13T12:26:34.717
2015-01-13T12:26:34.717
5575
5575
4483
answer