私はプロジェクトにgit-flowを使用しており、開発ブランチでかなり複雑な一連の変更を開始しました。これは、最初に予想したよりも時間がかかるようです。
他の変更を加えて新しいリリースを作成したいので、機能ブランチでこれを実行したかったのですが。これらのコミットされていない変更を新しいgit-flow機能ブランチに移動するにはどうすればよいですか?
コミットをしていない場合
作業コピーが汚れているだけの場合は、新しい機能を開始しようとしているように振る舞ってください:
git flow feature start awesomeness
git commit -va
いくつかのコミットを行った場合
機能ブランチにあるはずのコミットが開発にある場合、上記の手順は同じです。さらに、(おそらく - これは必須ではありません) 開発ブランチを機能ブランチの変更のコミットを開始する前の場所にリセットしたい場合があります。これは次の方法で実行できます。
git flow feature start awesomeness
git commit -va
git checkout develop
git reset origin/develop --hard
これを行う1つの方法は次のとおりです。
git checkout where-you-should-have-made-your-feature-branch
git branch feature-branch
git checkout feature-branch
foreach commit in commits-that-should-have-been-on-your-feature-branch:
# do this for each commit in chronological order
git cherry-pick commit
これは、開発ブランチをパブリック リポジトリに既にプッシュしているかどうかによって異なります。すべてがまだ非公開で、履歴を書き換えたい場合:
git checkout develop-branch
foreach commit in commits-that-should-have-been-on-your-feature-branch:
# do this for each commit in reverse chronological order
git rebase --onto commit~1 commit develop-branch
履歴を書き換えたくない場合:
git checkout develop-branch
foreach commit in commits-that-should-have-been-on-your-feature-branch:
# do this for each commit in reverse chronological order
git revert commit
そして、それはそれを行う必要があります。