1. ホーム
  2. ギット

[解決済み】Git リポジトリから選択したコミットログエントリを、その変更を維持したまま削除する方法とは?

2022-04-02 11:01:45

質問

線形コミットツリーから選択したコミットログエントリーを削除して、そのエントリーがコミットログに表示されないようにしたいのですが、どうすればいいですか?

私のコミットツリーは次のようなものです。

R--A--B--C--D--E--HEAD

BとCのエントリを削除してコミットログに表示しないようにしたいのですが、AからDまでの変更は保存されるはずです。おそらく、単一のコミットを導入することで、BとCはBCになり、ツリーは次のようになります。

R--A--BC--D--E--HEAD

あるいは、Aの後に直接Dが来るのが理想的です。D」は、AからB、BからC、CからDへの変化を表します。

R--A--D'--E--HEAD

可能ですか?可能な場合、どのように?

これはかなり新しいプロジェクトなので、今のところブランチがなく、したがって、マージもありません。

解決方法は?

git-rebase(1) はまさにその通りです。

$ git rebase -i HEAD~5

git awsome-ness [git rebase --interactive](ギット・リベース・インタラクティブ)。 は例を含んでいます。

  1. を使用しないでください。 git-rebase を公開 (リモート) コミットで使用します。
  2. 作業ディレクトリがクリーンであることを確認する ( commit または stash 現在の変更点)。
  3. 上記のコマンドを実行します。このコマンドは、あなたの $EDITOR .
  4. 交換 pick 以前 CD によって squash . CとDをBにマージします。もしコミットを削除したい場合は、その行を削除するだけです。

迷ったら、タイプしてください。

$ git rebase --abort