私は新しい機能の作業を開始し、少しコーディングした後、この機能を独自のブランチに配置する必要があると判断しました。
既存のコミットされていない変更を新しいブランチに移動し、現在のブランチをリセットするにはどうすればよいですか?
新しい機能に関する既存の作業を保持しながら、現在のブランチをリセットしたいと考えています。
私は新しい機能の作業を開始し、少しコーディングした後、この機能を独自のブランチに配置する必要があると判断しました。
既存のコミットされていない変更を新しいブランチに移動し、現在のブランチをリセットするにはどうすればよいですか?
新しい機能に関する既存の作業を保持しながら、現在のブランチをリセットしたいと考えています。
Git 2.23 では、(ブランチの切り替え、ファイルの復元、HEAD のデタッチなど)switch
のオーバーロードされた使用法から生じる混乱を解消するために、新しいサブコマンドが追加されています。checkout
このバージョンの Git 以降では、checkout コマンドを次のように置き換えます。
git switch -c <new-branch>
動作は同じで、変更されていません。
以下を使用します。
git checkout -b <new-branch>
これにより、現在のブランチはそのまま残り、新しいブランチを作成してチェックアウトし、すべての変更を保持します。次に、ファイルの変更をステージングしてコミットできます。
git add <files>
次のように新しいブランチにコミットします。
git commit -m "<Brief description of this commit>"
作業ディレクトリの変更とインデックスにステージングされた変更は、まだどのブランチにも属していません。これにより、それらの変更が終了するブランチが変更されます。
元のブランチはリセットせず、そのまま残ります。最後のコミット<old-branch>
は同じままです。したがって、あなたcheckout -b
はコミットします。
または:
現在の変更を一時スタッシュに保存します。
$ git stash
この stash に基づいて新しいブランチを作成し、新しいブランチに切り替えます。
$ git stash branch <new-branch> stash@{0}
ヒント: タブ キーを使用して、stash 名の入力を減らします。
コミットする場合は、単一のコミット ID を選択することもできます。master で作業を開始するときによくこれを行い、origin/ にプッシュする前にローカル ブランチを作成します。
git cherry-pick <commitID>
hereで説明されているように、チェリーピックでできることはたくさんありますが、これはユースケースになる可能性があります。