2014-04-15 2 views
-1

У меня есть 2 ветки, разработка и ведущий. Я хочу создать новую функцию в ветке разработки, поэтому я делаю:Git Flow Возможности создания и ресайзинга

git flow feature start test_01 

Что создает ветвь функции и переключается на эту ветку. По причинам тестирования я переключаюсь на ветку разработки и редактирую файл read_me.markdown. Я совершаю это изменение и выдвигаю его.

Я возвращаюсь к ветви свойств и редактирую один и тот же файл read_me.markdown в той же строке, чтобы вызвать конфликт слиянием. Чтобы закончить эту функцию я:

git flow feature finish test_01 -r (so it rebases the feature branch) 

Теперь возникает конфликт исправить его с помощью vimdiff с ВИМ-беглеца. Я начинаю vimdiff и делаю ": ls" Я выбираю удалённую ветку для использования. Далее я «: diffget 4» с последующим «: diffupdate» и рядом я просто пишу файл и закройте все «: ККА»

Теперь конфликт фиксируется и произошло слияние, и я просто просто нажмите мои изменения.

ПРОБЛЕМА: При этом я смотрю на инструмент Github для mac и вижу, что конфликтов нет и нет. Но когда я переключаюсь (checkout) на главную ветку и обратно в ветку разработки, я снова получаю тот же конфликт слияния?

Так что мне интересно, что не так в моем способе работы.

Большое спасибо за помощь

Update1) Github инструмент конфликта:

Auto-merging README.markdown 
CONFLICT (content): Merge conflict in README.markdown 
(1) 

UPDATE2) Пробовал без перебазирования же ошибка, не ошибка, когда не проверяя сук только в Инструменте Github

UPDATE3)

1) мерзавец запуск тест функции потока

2) сделать изменения для развития -> так что может спровоцировать конфликт

3) сделать изменения, чтобы отличать

4) мерзавца перебазирование особенности разработки

5) Исправить изменения -> Когда я хочу совершить это, он говорит: «Без изменений - вы забыли использовать« git add »?»

6) мерзавец контроль разработки

7) мерзавец слияния особенность ->ЕЩЕ ЕСТЬ Слияние конфликтов на развитие филиальной

UPDATE4) Детали

1) я на новый филиал разработать

2) git flow init

3) функция мерзавец потока начинают enhancement1 - создается> Feature филиал

4) мерзавец контроль разработки

4,1) в файле readme.md добавить «testtesttest» и совершить свою работу

4,2) салить статус

4,2) Я поставил файл readme.md на «изменения, которые будут совершены»

4,3) предаю эти файлы

4.4) Совершенные как «совершение по разработке филиала»

5) функция мерзавец Checkout/enhancement1

5,1) в файле readme.md добавить «XXXXXXXXX» и совершить свою работу

5.2) Tig статус

5,2) Я поставил файл readme.md на «изменения, которые будут совершены»

5,3) Я обязуюсь эти файлы

5.4) Совершенные как «совершать на художественном отделении»

6) мерзавец Rebase функцию/enhancement1 разработки

First, rewinding head to replay your work on top of it... 
Applying: Commit on Develop Branch 
Using index info to reconstruct a base tree... 
M README.md 
Falling back to patching base and 3-way merge... 
Auto-merging README.md 
CONFLICT (content): Merge conflict in README.md 
Failed to merge in the changes. 
Patch failed at 0001 Commit on Develop Branch 
The copy of the patch that failed is found in: 
    /Users/Vincent/Documents/featureconflicts/.git/rebase-apply/patch 

When you have resolved this problem, run "git rebase --continue". 
If you prefer to skip this patch, run "git rebase --skip" instead. 
To check out the original branch and stop rebasing, run "git rebase --abort". 

7) теперь у меня есть конфликт, то я исправлю его установки файла состояния 5.1 (в Файл readme.md добавить «XXXXXXXXX»)

8) Исправлен конфликт

9) перебазироваться ли мерзавец --skip

10) Переключатели для моего развития отрасли

11) повышение мерзавец потока функция отделка

-> Теперь все работает отлично. Так что это было rebase -skip, что было необходимо.

+0

Вы получаете конфликт слияния при оформлении заказа или код слияния просто не разрешен в других филиалах? –

+0

@ExplosionPills Первый конфликт слияния происходит с завершением функции потока git. Второе происходит при переключении ветвей в Github Tool. Если я переключаю ветви с помощью git checkout, ошибка не возникает. Я добавил точную ошибку к моему первому обновлению. – Vinozio

+1

'Когда я хочу сделать это, он говорит:« Без изменений - вы забыли использовать «git add»? »« Вы действительно это сделали? – sevenseacat

ответ

1

Так что ключ к этой истории были, если возникает конфликт:

-> и изменения обоего ветвей сохраняемого - мерзавец перебазироваться --continue -> если изменение только функции должно быть Сохранено - git rebase --skip

+0

Я бы сказал: Rebase в вашем случае пытается повторно применить патчи (от общего предка между функцией и развиваться до конца ветки признаков) на вершине развитой ветви. В случае конфликтов вы должны разрешить их и сообщить git, что вы сделали, используя git add, а затем rebase - continue. Если вы используете skip, это будет означать, что текущий патч в последовательности rebase из ветки функции не будет применен, и вы перейдете к следующему. –

1

Вы работаете в среде с сотнями людей, работающих в одном проекте? Я не чувствовал, что вы это делаете, поэтому слепое использование разветвленной модели git flow относится к огромному излишеству. Вам не нужно прыгать от ветки к ветке только ради использования ветвей. Используйте ветки, когда они вам понадобятся. Итак, сначала я рекомендую отказаться от инструмента потока и использовать только git. В сольном проекте вы можете легко развить в ветке разработки напрямую и разветвить функции только в том случае, если вам нужно сделать что-то еще параллельно.

В случае, если вы используете функцию ветви, здесь есть последовательность, которая должна сделать трюк:

git checkout -b myfeature develop # creating branch from develop and checking out 
commit, commit, commit... 
git rebase myfeature develop # resolve conflicts if any 
git checkout develop 
git merge myfeature # fast-forward 
git checkout master 
git merge develop # fast-forward 
git push # or git push <remote_name> master 

Это, кажется, путь более ясным и менее многословным.

Из последних обновлений ОП ясно, что изначально он не заканчивал операцию переустановки должным образом в случае конфликтов. В случае конфликтов во время перебазирования вы должны сделать:

`git status` #will provide the the list of conflicting files marking them as 
both modified, so edit them to remove conflicts 
    `git add {files}` # to tell git that the conflicts are resolved and you can 
continue with rebase 
    `git rebase --continue` # continue rebase operation, by applying next 
patch in line. 

в зависимости от того, как вы разрешить конфликты на следующий патч может вызвать другой набор конфликтов, если тот же кусок кода был тронут.

+0

Вы описали, что поток совершенен, но не отвечает на вопрос, почему он получает ошибки – PascalPrecht

+0

У меня все еще есть конфликт с объединением взгляда на обновление 3 – Vinozio