2015-01-23 2 views
0

Это тот же вопрос, что и merge branch that was created from old commit to master, который не получил полного ответа. Поэтому у меня есть следующая ситуация на моей development ветвиКак слить ветку, сделанную из старой фиксации

$ git commit 
commit 1 

Все хорошо.

Изменить файлы a, b и c.

$ git commit 
commit 2 

Автоматизированное тестирование не удалось

Отозванных файлов

$ git commit 
commit 3 
$ git checkout 2 
$ git branch failed 

Найти ошибки в b, исправить, тест

$ git commit 
commit 4 
$ git checkout development 
$ git merge failed 

ТОЛЬКО b слито. a и c - нет. Я подтверждаю, что физически смотрю файлы и замечаю, что они разные. A git diff development..failed еще раз демонстрирует их как разные.

Мне нужны все файлы. Когда я делаю git merge, я ожидаю, что все будет перенесено, чтобы они были в основном одинаковыми.

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

Как это сделать правильно? Как я могу правильно объединить все файлы, отличные от этого failed, обратно в development?

спасибо.

+0

Я понимаю вас правильно? Вы хотите, чтобы 'a' и' c' были такими же, как в * commit 2 * после слияния 'fail' (который начинался с * commit 2 *)? –

+0

Если я делаю 'git checkout 2', а затем' git branch failed', я не получаю ветвь, созданная с именем 'failed'. Я остаюсь в отдельном состоянии HEAD и потеряю любые коммиты при переключении на «развитие» в качестве состояния предупреждения git. Вы уверены, что ветвь 'fail' создана? –

+0

Я, вероятно, не совсем понял, что я сделал, я много бил головой о страницы манер, пытаясь понять, как делать то, что я хочу сделать, но конечный результат заключается в том, что у меня есть ветка «сбой», commit 2 ", который затем меняет файл" b ". Я хочу объединить эту ветку, все три файла, вернуться в разработку (где другие с тех пор также вносили изменения, но не в эти конкретные файлы). – WizardStan

ответ

0

Правильный ответ состоит в том, чтобы просто вернуть обратно и слить оттуда.

В моей конкретной ситуации другие разработчики уже внесли изменения в вернувшийся код, который мне также нужен для вишневого отбора.

Смежные вопросы