3558

私は新しい機能の作業を開始し、少しコーディングした後、この機能を独自のブランチに配置する必要があると判断しました。

既存のコミットされていない変更を新しいブランチに移動し、現在のブランチをリセットするにはどうすればよいですか?

新しい機能に関する既存の作業を保持しながら、現在のブランチをリセットしたいと考えています。

4

9 に答える 9

4189

2020 年更新 / Git 2.23

Git 2.23 では、(ブランチの切り替え、ファイルの復元、HEAD のデタッチなど)switchのオーバーロードされた使用法から生じる混乱を解消するために、新しいサブコマンドが追加されています。checkout

このバージョンの Git 以降では、checkout コマンドを次のように置き換えます。

git switch -c <new-branch>

動作は同じで、変更されていません。


アップデート前 2020 / Git 2.23

以下を使用します。

git checkout -b <new-branch>

これにより、現在のブランチはそのまま残り、新しいブランチを作成してチェックアウトし、すべての変更を保持します。次に、ファイルの変更をステージングしてコミットできます。

git add <files>

次のように新しいブランチにコミットします。

git commit -m "<Brief description of this commit>"

作業ディレクトリの変更とインデックスにステージングされた変更は、まだどのブランチにも属していません。これにより、それらの変更が終了するブランチが変更されます。

元のブランチはリセットせず、そのまま残ります。最後のコミット<old-branch>は同じままです。したがって、あなたcheckout -bはコミットします。

于 2009-09-08T15:59:03.267 に答える
376

または:

  1. 現在の変更を一時スタッシュに保存します。

    $ git stash

  2. この stash に基づいて新しいブランチを作成し、新しいブランチに切り替えます。

    $ git stash branch <new-branch> stash@{0}

ヒント: タブ キーを使用して、stash 名の入力を減らします。

于 2015-06-19T00:18:44.717 に答える
21

コミットする場合は、単一のコミット ID を選択することもできます。master で作業を開始するときによくこれを行い、origin/ にプッシュする前にローカル ブランチを作成します。

git cherry-pick <commitID>

hereで説明されているように、チェリーピックでできることはたくさんありますが、これはユースケースになる可能性があります。

于 2015-11-30T20:58:06.690 に答える