2016-10-14 3 views
0

мне нужно переставить «линейную структуру»Как переделать в нескольких независимых ветвях в git?

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 

Пример: Давайте начнем с одной ветви (давайте назовем его темп), полученный из мастера, а затем давайте несколько фиксаций - C1 .. С10. Вместо этого я хотел бы иметь две ветки, основанные на главном (по одной функции). Я могу создать эти две ветви, передав фиксацию до C1. Чем, как перестановки (слияние?) Все совершает таким образом, чтобы получить совершающие от С1 к C5 в ветвь-1 (полученная из мастера) и ветвей от C6 к С10 в branch-2 также получено из master? В результате в журнале филиал-2 Я ожидаю, чтобы иметь C0, C6..C10 (где C0 является последней фиксации в мастер филиала).

Вероятно филиал-1 может быть получена путем переименования темпа и делать

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

Но для ветвей 2 как удалить C1..C5 и держать остальное?

EDIT: Вот тестовый скрипт, который может быть использован для воспроизведения случая:

#!/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 
Смежные вопросы