web-dev-qa-db-ja.com

マスターをgitでいくつかのコミットに戻すにはどうすればよいですか?

Drupalサイトを保持するgitリポジトリがあります。昨日、いくつかの異なるモジュールを使用して機能を構築しようとしました。現在のアプローチをあきらめて、別のアプローチを試すことにしました。モジュールの組み合わせ。ただし、私のリポジトリには、この機能開発プロセスを含むマスターブランチにいくつかのコミットがあります(効果的な方法でブランチしなかったことを理解しています)。最後の3つまたは4つのコミットを取り除き、マスターを設定したいと思います。私の歴史のその時点まで(現在の作業を何かとマージしたくはありません。ただそれをなくしたいだけです。)これを行うにはどうすればよいですか?

16
Hoytman

ローカルで実行するには、次のコマンドを実行してマスターに移動し、古いコミットに移動します。

git checkout master
git reset --hard <old_commit_id>

その後、リモートにプッシュする場合は、-fオプションを使用する必要があります。

git Push -f Origin master
43
merlin2011

マスター3のコミットをポイントするには:

$ git reset --hard master~3

これを行う前に、現在のマスターをバックアップすることをお勧めします

$ git checkout -b master_backup

マスターを移動した後、コミットのツリーを確認してください。

$ git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all
3
grisaitis

いつでもgit reset <commit>。おそらく、これを行う最も簡単な方法は、グラフィカルなフロントエンド、つまりgitkを使用することです。

おそらく最初にgit branch branch-for-failed-experimentしたがって、実験の作業が永久に失われることはありません。

ブランチを公開した場合(つまり、削除されるコミットに基づいて他のユーザーが作業できる場合)、それらは取り残されることに注意してください。それらがあなたと同期していることを確認してください。

1
vonbrand