Drupalサイトを保持するgitリポジトリがあります。昨日、いくつかの異なるモジュールを使用して機能を構築しようとしました。現在のアプローチをあきらめて、別のアプローチを試すことにしました。モジュールの組み合わせ。ただし、私のリポジトリには、この機能開発プロセスを含むマスターブランチにいくつかのコミットがあります(効果的な方法でブランチしなかったことを理解しています)。最後の3つまたは4つのコミットを取り除き、マスターを設定したいと思います。私の歴史のその時点まで(現在の作業を何かとマージしたくはありません。ただそれをなくしたいだけです。)これを行うにはどうすればよいですか?
ローカルで実行するには、次のコマンドを実行してマスターに移動し、古いコミットに移動します。
git checkout master
git reset --hard <old_commit_id>
その後、リモートにプッシュする場合は、-f
オプションを使用する必要があります。
git Push -f Origin master
マスター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
いつでもgit reset <commit>
。おそらく、これを行う最も簡単な方法は、グラフィカルなフロントエンド、つまりgitk
を使用することです。
おそらく最初にgit branch branch-for-failed-experiment
したがって、実験の作業が永久に失われることはありません。
ブランチを公開した場合(つまり、削除されるコミットに基づいて他のユーザーが作業できる場合)、それらは取り残されることに注意してください。それらがあなたと同期していることを確認してください。