gitのステージング領域にコミットをどのように移動しますか?


143

ステージング領域にコミットを移動したい場合-コミットを解除し、そこにあったすべての変更をステージング領域に移動します(事実上、ブランチはコミット前の状態にあります)-どうやってやるの?それともできないことですか?

私が知っている最も近い方法は、コミットで変更されたすべてのファイルを別の場所にコピーし、ステージング領域に移動しようとしているコミットの前にブランチをコミットにリセットし、すべてのファイルを移動することですファイルをリポジトリにコピーして戻し、ステージング領域に追加します。それは機能しますが、それは必ずしも良い解決策ではありません。私ができることは、コミットを元に戻し、変更をステージング領域に移動することだけです。できますか?もしそうなら、どのように?

回答:


267
git reset --soft HEAD^

これにより、インデックスがHEAD^(前のコミット)にリセットされますが、変更はステージング領域に残ります。

いくつかあります。便利なダイアグラムでのgit-resetドキュメントが

Windowsを使用している場合は、次の形式を使用する必要があります。

git reset --soft HEAD~1

18
これが何もしない場合git reset --soft HEAD~1は、同じことを意味しますが、Windowsでも機能します。
Roman Starkov

9
明確にするために、チルドとキャロットはgitバージョンでは異なる意味を持っています。HEAD〜1は、常にコミットの最初の親の後に続きます。これは、複数の親を持つマージコミットの場合は、必要とはならない場合があります。Windows cmdシェルについては、キャロットを別のキャロットでエスケープするだけで済みます。たとえば、「git reset --soft HEAD ^^」で「HEAD ^」に戻ります。これは純粋にWindows cmdシェルのアーティファクトなので、Windowsでgit GUIを使用している場合は、その必要はありません。ティルデとキャロットはschacon.github.io/git/git-rev-parse#_specifying_revisions
ahains

「便利な図」のリンクを追加しました。それがあなたが意図したセクションにつながるかどうかすぐに確認できますか?ありがとう
Neuron

5

簡単な方法

  1. ステージング領域にコミットされたファイル

    git reset --soft HEAD^1

  2. UnStageへのステージング:(「git reset HEAD ...」を使用してステージングを解除します)

    git reset HEAD git commands.txt or git reset HEAD *ds.txt

ここでは、 *->アンステージするために、すべてのファイルがds.txtで終わります。

明確にするために以下の写真を参照してください:

ここに画像の説明を入力してください

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.