0

わかりました、次の状況があります。私はdevelopと呼ばれるブランチを持っています。開発からAIOEC-393
というブランチを作成しました。 次のコミットが含まれています。

nicoladj77 ワードプレスの再インストール 938f469

nicoladj77 AIOEC-122: ai1ec_events 2254569 のフィードを追加

nicoladj77 AIOEC-122: 解析済み css ファイル d10e29e を削除しました

nicoladj77 AIOEC-122: 関数 38054dd にコメントを追加

nicoladj77 AIOEC-393: ファイルの移動を開始しています 6f92360

nicoladj77 AIOEC-393 はクラスを移動し、require_once 呼び出しを削除しました b7ab691

nicoladj77 AIOEC-393: ベースコンテナ 87e8b91 の移動を開始しています

nicoladj77 AIOEC-393: クラスを提案どおりに移動し、少しリファクタリングしました… … 1093032

開発に基づいており、 AIOEC-393の最後の 4 つのコミット(もちろん、 AIOEC-393 で始まるコミット) のみを含む別のブランチを作成する必要があります。これどうやってするの?

4

3 に答える 3

2

git cherry-pickこれを行うことができます。現在のブランチにマージするコミット ID をコマンドの引数として指定するだけです。これにより、コミットが別のブランチに属している場合でも、コミットが「チェリー ピック」されます。

または、うまくいくはずのものは次のとおりです。

  1. ブランチのクローン/チェックアウト
  2. いくつかのコミットを巻き戻します (reset --hard commit_ID)
  3. 必要なコミットを選択します

これにより、リベースの実行が回避されます。

于 2012-09-05T11:41:17.520 に答える
1

コミットがブランチの最初のコミットである場合は、最後のコミットをチェックアウトして、その場所に新しいブランチを作成するだけです。

git checkout -b new_branch <id of "AIOEC-393: Starting to move files 6f92360">

新しいブランチに必要なコミットの前に他のコミット (不要) がある場合は、新しいブランチを作成してリベースします。

git checkout -b new_branch <last commit you want>
git rebase --onto develop <commit before your commits> new_branch

または、ブランチを作成して、必要なdevelopコミットを選択します。

git checkout -b new_branch develop
git cherry-pick <commit before your commits>..<last commit you want>
于 2012-09-05T11:52:35.053 に答える
1

での解決策を提案しますrebase onto。次のレポがあるとします。

user@HOST c:/_TEMP/FOO (AIOEC-393) $ git lga
* 8c2d5c5 - (HEAD, AIOEC-393) commit5 (Yanflea 2 minutes  ago)
* 3c20e52 - commit4 (Yanflea 2 minutes  ago)
* c5383af - commit3 (Yanflea 2 minutes  ago)
* fb11e98 - commit2 (Yanflea 2 minutes  ago)
* e019261 - (develop) commit1 (Yanflea 2 minutes  ago)
* 0cfe064 - (master) Initial commit (Yanflea 2 minutes ago)

そして、 commit2AIOEC-393を除くブランチからのすべてのコミットが必要です。

'temp' ブランチに移動しましょう (AIOEC-393変更されないようにします):

$ git checkout -b develop-target

commit2をピボットとして使用してrebase ontoコマンドを使用します。

$ git rebase --onto develop fb11e98 develop-target

ログを見てみましょう:

user@HOST c:/_TEMP/FOO (develop-target) $ git lga
* 7bcb162 - (HEAD, develop-target) commit5 (Yanflea 2 minutes ago)
* 3c89459 - commit4 (Yanflea  2 minutes ago)
* e6ed5f7 - commit3 (Yanflea  2 minutes ago)
* e019261 - (develop) commit1 (Yanflea  2 minutes ago)
* 0cfe064 - (master) Initial commit (Yanflea  2 minutes ago)

developからに早送りするだけですdevelop-target(そして を削除しdevelop-targetます):

$ git checkout develop
$ git rebase develop-target
$ git branch -d develop-target

ログ:

user@HOST c:/_TEMP/FOO (develop) $ git lga
* 7bcb162 - (HEAD, develop) commit5 (Yanflea 2 minutes ago)
* 3c89459 - commit4 (Yanflea 2 minutes ago)
* e6ed5f7 - commit3 (Yanflea 2 minutes ago)
* e019261 - commit1 (Yanflea 2 minutes ago)
* 0cfe064 - (master) Initial commit (Yanflea 2 minutes ago)
于 2012-09-05T12:58:01.683 に答える