2

新しい機能を追加したかったので、master からブランチ A を作成しました。機能を完成させた時点で、ここまでのすべてをコミットしました。しかし、その後、私はブランチで作業を続けましたが、そのコミット以降に行ったすべてのことは、マスターから離れた新しいブランチ (それを B と呼びます) でより論理的に意味があることに気付きました。

これで、変更を A にコミットし、それを master にプルし、次にブランチ マスターにプルし、それを B と呼び、続行することができます。しかし、本当に物事をきれいに保ちたいと思っていて、最後のコミットを A から master にプルし、ブランチ B を作成して、現在 A にあるコミットされていない変更をプルしたい場合はどうすればよいでしょうか?

4

2 に答える 2

3

ブランチ A にあるものから始めます。

 git stash           # save your changes away
 git checkout master # check out the master branch
 git merge A         # merge your changes from branch A
 git pull --rebase   # This is to get rid of the 'Merged branch A' log entry
 git checkout -b B   # create and checkout branch B from current master
 git stash pop       # get back the changes you saved

コミットされていない変更を含む、新しく作成されたブランチ B に移動します。

于 2010-10-25T02:50:23.387 に答える
2

特定のブランチの HEAD だけでなく、任意の開始点からブランチをマージして作成できます。

のドキュメントで に<start-point>関連するオプションを見てください。git branch

実際に B の作業を開始した時点で A を master にマージする場合、git mergeコマンドは任意のコミットを引数として受け入れます(繰り返しますが、ブランチの HEAD だけではありません)。このブランチのログに戻り、A の作業が終了し、機能 B の作業を開始したポイントのコミット ID を見つけて、マスターをチェックアウトし、この ID でマージします。

于 2010-10-25T02:51:10.350 に答える