1. ホーム
  2. git

[解決済み] 現在の変更点を含むGitブランチの作成

2022-03-16 11:05:17

質問

の作業を開始しました。 マスター ブランチは、私の仕事は簡単だと考えていました。しばらくして、もっと作業が必要だとわかったので、この作業をすべて新しいブランチで行いたいと思います。

新しいブランチを作成し、これらの変更をすべて持ち運ぶにはどうしたらよいでしょうか。 マスター ?

解決方法は?

まだコミットしていない場合は、(1: branch) と (3: checkout) のみで十分です。
あるいは、1つのコマンドで git checkout -b newBranch

Git 2.23+ (2019年第3四半期)では 新コマンド git switch を使えば、1行でブランチを作成することができます(同じように reset --hard ということで その効果に注意 ):

# First, save your work in progress!
git stash

# Then, one command to create *and* switch to a new branch
git switch -f -c topic/wip HEAD~3

で述べたように git reset マンページ :

$ git stash                # (0) Save your work in progress
$ 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)

  1. いくつかのコミットを行ったが、それが " に入るには時期尚早であったことに気がついた。 master ブランチです。トピックブランチで推敲を続けたいので、" topic/wip 現在の HEAD .
  2. を巻き戻す。 master ブランチからこれらの 3 つのコミットを削除します。
  3. "に切り替えます。 topic/wip "ブランチを作成し、作業を続けます。

繰り返しますが、(2019年とGit2.23以降)1つのコマンドですべてを行う新しい方法です。

git switch -f -c topic/wip HEAD~3


注)quot;destructive"効果により git reset --hard コマンドを実行すると、インデックスと作業ツリーがリセットされます。作業ツリー内のトラッキングされたファイルへの変更はすべて <commit> は破棄されます)、私はむしろ、この方法で行きたいと思います。

$ git reset --soft HEAD~3  # (2)

これで、プライベートなファイル(インデックスに追加されていない)を失わないようにすることができます。
その --soft オプションはインデックスファイルや作業ツリーにはまったく手をつけません (しかし、head はリセットして <commit> 他のモードと同じように)。