移動一言で言えば
をコミット:リセットし、最後のコミットと2つの新しいコミット
私が正しく理解していれば
は、あなたが最もを維持したい作ります最初のコミットの変更のうちの小さいものを2番目のコミットに入れます。 このような場合は、その後、最初のあなたは、ソフトにしたい(おかげで先端のため@hvd)最後のコミットをリセットします。決してコミットしないかのように
git reset --soft HEAD^
これは、変更コミット最後を削除しませんが、起こった、そして変化はすべてステージングされる。 この時点で、最初のコミットでは不要なファイルをステージングしないようにします。
git reset -- path/to/file-or-dir
今、あなたは(すでに上演)の変更の大半のコミットを行うことができ、その後、残りの二コミット: あなたはこのように、ディレクトリ、ファイルまたはディレクトリでファイルをunstageすることができます。
あなたが二コミットの最初のコミットやその他の変更の変更のいくつかをしたいファイル、 を持っているなら、あなたは、最初にファイル全体をリセット と選択のように、git add -p
を使用して変更をステージングすることができます
git add
の
git reset -- path/to/file
git add -p path/to/file
-p
オプションでは、ステージにハンクを選択できます。ハンクを分割して、ステージを細かく制御することができます。
最初のコミット後に、まだ保留中の(ステージングされていない)変更を追加することができます。
これは正しいですが、OPが欠落しています:OPがすでにコミットを作成しているため、OPは最初にそのコミットを削除する必要があります。 'git reset --soft @ ^'を使って全ての段階的な変更を利用できるようにしておくか、あるいはlarsの答えが既にunstagingされているようにする。 – hvd
ありがとう@hvd、実際に私は最初に主な意図を誤解しました。あなたのコメント(そして再読)の後、私は答えを修正した – janos