まだコミットしていない場合は、(1:ブランチ)と(3:チェックアウト)で十分です。
または、1つのコマンドで:git checkout -b newBranch
git resetmanページで述べたように:
$ 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