まだコミットしていない場合は、(1:ブランチ)と(3:チェックアウト)で十分です。
または、1つのコマンドで:git checkout -b newBranch
git reset
manページで述べたように:
$ git branch topic/wip # (1)
$ git reset --hard HEAD~3 # (2) NOTE: use $git reset --soft HEAD~3 (explanation below)
$ git checkout topic/wip # (3)
- あなたはいくつかのコミットを行いましたが、それらが「
master
"ブランチ。あなたはトピックブランチでそれらを磨き続けたいのでtopic/wip
、現在から「」ブランチを作成しますHEAD
。
master
ブランチを巻き戻して、これらの3つのコミットを削除します。
- 「
topic/wip
」ブランチに切り替えて作業を続けます。
注:git reset --hard
コマンドの「破壊的」効果のため(インデックスと作業ツリーはリセットされます。作業ツリー内の追跡ファイルへの変更<commit>
は破棄されるため)、次のようにします。
$ git reset --soft HEAD~3 # (2)
これにより、プライベートファイルが失われないようになります(インデックスに追加されません)。
この--soft
オプションは、インデックスファイルにも作業ツリーにもまったく触れません(ただし、ヘッドを<commit>
、すべてのモードと同様ににます)。
でGitの2.23+、新しいコマンドがgit switch
(同じ種類で1行にブランチを作成しますreset --hard
ので、その効果には注意してください):
git switch -f -c topic/wip HEAD~3