これは私のシナリオです。 私はブランチAに対して作業しています。ブランチBからブランチAにローカルブランチをマージしました。その後、ブランチAでいくつかの変更を行い、コミットYを行いました。このマージを取り消し、Yコミットだけを残します。 私はローカルからリモートブランチにプッシュしていません。すべての変更は発信コミットにあります。 コミットYで行われた作業を失うことなく、それを実行するにはどうすればよいですか? おかげgitで特定のローカルコミットを取り除く
ところで:私は(私はおそらく知っているこれは、コマンドラインになりますが、誰もが素晴らしいだろうソースツリー使用していることを行う方法を知っていれば)ソースツリーを使用しているでコミット限り何もないよう
これは正しい答えです( 'git rebase -i'を使用します)。ただし、' git rebase -i'はあなたのためにマージコミットを明示的に削除する必要はありません:rebaseのデフォルトは破棄します合併する。 'git rebase -p'を使うと、マージを維持しようとします(実際には*再作成する必要があります)。しかし、これを' git rebase -i'と組み合わせるのは賢明ではありません。 – torek
これは別のアイデアであるため別のコメントとして記しておきます。別のリポジトリにプッシュするのではなく、ちょっと神経質な場合は、新しいブランチ名を作成して現在のコミットチェーンを保存する方が簡単です。 'git rebase -i'を実行する前に' git branch saveme'を実行してください。あなたのrebaseが終了すると、ブランチ 'saveme'は元の(rebase前の)コミットを持ち、あなたの現在のブランチは新しい(post-rebase)コピーを持ちます。すべてが良ければ、 'git branch -D saveme'を実行して保存されたオリジナルを投げることができます。 (実際には、オリジナルの名前を 'ORIG_HEAD'という特別な名前で保存します。) – torek