1

2 つのブランチがmasterありfeatureます。

の作業を終えたfeatureので、このブランチには多くのコミットがありますが、そのまま公開したくありません。feature_cleanからのすべての変更を含むfeatureが、より良いコミットで呼び出されるブランチを作成したいと考えています。

私は次のことを試しました:

git checkout -b feature_clean master
git checkout feature
git rebase --interactive feature_clean
# reorganize commits etc, save and close editor

、これはfeature_clean正しく作成されましたが、変更されましたfeature。実際、両方のブランチは同等でした。

私は何を間違えましたか?今のところそのままにしておきたいです(適切にテストされ、承認されfeatureた後、後で削除します)。feature_clean

4

2 に答える 2

1

HEADrebaseコマンドが間違っています;)gitに現在のブランチ(この場合はfeature)を。の上にリベースするように指示していますfeature_clean。私はあなたが実際にやりたいことは次のとおりだと思います:

git checkout -b feature_clean feature
git rebase -i master

つまり、リプレイはからコミットfeature_cleanmasterます。feature引き続き古いコミットを指します。

git rebase masterの省略形ですgit rebase --onto master master HEAD:との間のすべてのコミットを取得しmasterHEADからは到達可能ですがHEAD、からは到達できませんmaster)、それらをに貼り付けますmaster

于 2011-08-10T21:00:30.960 に答える
0
  1. 機能ブランチをチェックアウトする
    git checkout feature

  2. 新しいfeature_cleanブランチを作成します
    git checkout -b feature_clean

  3. そのブランチをマスターから分割した場所にリベースします
    git rebase -i --onto shaOfSplit shaOfSplit feature_clean

  4. インタラクティブなリベースを行う

リベースの最後に、同じポイントから2つのブランチが切断されます。 feature_cleanのリベースバージョンになりますfeature

于 2011-08-10T21:15:56.377 に答える