2016-10-14 7 views
0

私は「フォーク様構造」に「線形構造」独立したブランチでコミットを再配置する方法はありますか?

temp  -C1-C2-C3-C4-C5-C6-C7-C8-C9-C10 
     /
master -C0 

を再配置する必要があります。

branch-1 -C1-C2-C3-C4-C5 
     /
master -C0 
     \ 
branch-2 -C6-C7-C8-C9-C10 

例:、のは(のは一時という名前を付けましょう)1つのブランチから始めましょうマスター由来し、その後のは、いくつかのコミットを入れてみましょう - C10C1 .. 。 これに代えて、私はマスター(機能ごとに1つ)に基づいて2つのブランチを持っていたいと思います。 C1の前にコミットを参照して、これらの2つのブランチを作成できます。でC1C5からコミットを取得する方法で(マージ?)すべてのコミット改造する方法、よりブランチ-1 C10C6からと枝(マスター由来)ブランチ-2から派生したものもありますか? ブランチ-2のログ内の結果として私が持っていることを期待C0C6..C10C0が最後にマスターブランチにコミットです)。

おそらくブランチ-1一時の名前を変更し、

git reset --hard HEAD~5 #or 4 (?) 

を行うことによって、しかしブランチ-2C1..C5を削除し、残りを保つためにどのようにするために検索することができますか?

編集:ここではケースを再現するために使用することができ、テストスクリプトです:

#!/bin/bash 

## file names 
file1='file1' 
file2='file2' 

## clean-up for fresh start 
if [ -d .git ] 
then 
    rm -rf .git 
fi 
## create files 
echo start1 > $file1 
echo start2 > $file2 

## start the repository creation 
git init 
git add $file1 $file2 
git commit -am 'C0' 

## linear branch 
git checkout -b temp 

## implement features 1 & 2 in files 1 & 2 
for i in {1..10} 
do 
    if [ $i -le 5 ] 
    then 
    file=$file1 
    else 
    file=$file2 
    fi 
    msg='line '$i 
    echo $msg >> $file 
    git commit -m "C$i" $file 
done 

答えて

1
git branch branch-1 C5 
git branch -m temp branch-2 
git rebase --onto C0 branch-1 branch-2 
関連する問題