2

1 つのブランチにのみ git リポジトリがあります

A-B-C-D-E (master)

コミット B、C、および D を、develop という別のブランチに分割したい

A-E (master)
 \
  B-C-D (develop)

これを行う最も簡単な方法は何ですか? リモートリポジトリを気にする必要はありません。cherry-pickコミットを別のブランチにコピーするだけですか? 必要だと思いますrebaseが、これまで使用したことがないので、最初の試行でこれを正しく使用したいと思います:)

関連する質問がいくつかありますが、これらには対処する必要がある最後のコミット E がありません。

4

2 に答える 2

0

あなたが望むことは、正確には不可能だと思います。しかし、これの結果はほぼ同じです:

git checkout D  # checkout (step) to the D commit /this does not modify the master branch/
git branch develop  # create develop branch, based on D
git checkout develop # now you stand on D commit
git push origin develop # push the new branch to repo, named origin
git checkout master # now you stand on E commit again

これは、開発ブランチを作成する方法です。どのブランチもコミットを指しています。または、これが好きな場合は、ブランチはコミット グラフ内のコミットの単なるエイリアスです。たとえば、コミット グラフで道路を考えることができますが、実際にはそうではないと思います。(コミットするときに作成されるコミット グラフの実際のエッジ (古いコミットと新しいコミットの間のエッジ)、または 2 つのコミットをマージするとき (新しいコミットと 2 つの「親」コミットの間のエッジ))

結果を参照してください。

git log --graph --decorate --pretty=oneline --abbrev-commit --all

   A-B-C-D-E (master)
         \-D (develop)

お役に立てれば幸いです。

于 2013-03-17T12:11:23.017 に答える