私は「フォーク様構造」に「線形構造」独立したブランチでコミットを再配置する方法はありますか?
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つのブランチを作成できます。でC1にC5からコミットを取得する方法で(マージ?)すべてのコミット改造する方法、よりブランチ-1 にC10にC6からと枝(マスター由来)ブランチ-2から派生したものもありますか? ブランチ-2のログ内の結果として私が持っていることを期待C0、C6..C10(C0が最後にマスターブランチにコミットです)。
おそらくブランチ-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