Возникли определенные проблемы с объединением новой ветки git с моей головной веткой

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

У меня есть две локальные ветки git на моей машине — ветка с именем «v2» и ветка с именем «мастер».

Я хотел бы объединить ветку «v2» с веткой «master». Когда я выполняю слияние, возникает ряд конфликтов, которые я должен разрешать один за другим.

У меня возникли проблемы с тем, что в файле ветки «master» есть дополнительный код, которого нет в ветке «v2». Как сохранить файл ветки «главный», а не версию файла ветки «v2»?

Варианты, представленные мне Git Tower для этих типов конфликтов:

  • Отметить FILENAME как решенный вручную
  • Решить, сохранив FILENAME
  • Решить, удалив FILENAME
  • Восстановить их версию FILENAME
  • Открыть во внешнем приложении

Насколько я понимаю, вариант «сохранить» файл означал сохранение версии «v2» (тот, который объединяется), а «удаление» файла означало не добавлять версию «v2» (но вместо этого сохранять существующую «основную» версию). ). Однако, когда я использовал эту опцию, он фактически полностью удалил файл из репо.

Как сохранить файл ветки "главный", а не версию файла ветки "v2" для этих типов конфликтов?


РЕДАКТИРОВАТЬ: я объединяю v2 с мастером, в то время как мастер проверен и головная ветвь.


person Tim Jahn    schedule 14.12.2012    source источник
comment
Вы объединяете v2 с мастером (git merge master, пока v2 извлекается) или master с v2 (git merge v2, пока он находится на мастере) — это важно для смысла сохранения и восстановления их   -  person Nevik Rehnel    schedule 14.12.2012
comment
Я объединяю v2 с мастером, в то время как мастер проверен и головная ветвь.   -  person Tim Jahn    schedule 14.12.2012


Ответы (1)


Поскольку вы объединяете что-то еще (v2, также известное как их) в мастер, вы можете «сохранить» файл (который относится к «нашему»), оставив файл как есть на мастере.

Помните, что репозитории git автономны; вы можете просто протестировать что-то подобное, сделав резервную копию (скопируйте всю папку, содержащую ваш репозиторий, в другое место или ZIP/TAR) и попробуйте. Если это не дает того результата, о котором вы думали, и вы не можете отменить это с помощью инструментов git, просто удалите и восстановите свою резервную копию! :D

person Nevik Rehnel    schedule 14.12.2012
comment
Хорошо, это имеет смысл. Для конфликтов, когда версия v2 является той, которую я хочу сохранить, мне предоставляются варианты: сохранить, удалить или восстановить их версию FILENAME. Хотел бы я тогда сделать вариант восстановления? - person Tim Jahn; 14.12.2012
comment
@TimJahn, это было бы Восстановить их. При слиянии или перемещении наши ссылаются на домашнюю ветку (в слиянии — на ту, в которой вы сейчас находитесь), а их — на другую ветку (в слиянии — на ту, в которую вы сливаетесь на своей базе). - person Nevik Rehnel; 15.12.2012
comment
Я так и думал (я понимаю идею наших и их), но опция «Восстановить их» не разрешает конфликт, хотя в Git Tower для меня. Любые идеи? - person Tim Jahn; 15.12.2012
comment
не используйте git Tower :D git очень мощный. Я не использую ничего, кроме gitk, для визуализации длинных историй и eclipse для больших проектов, чтобы показать изменения внутри IDE. Но все значимое, например, слияние, я делаю с самим git - person Nevik Rehnel; 15.12.2012
comment
Сказать мне не использовать часть программного обеспечения не отвечает на мой вопрос о том, как что-то сделать в этой части программного обеспечения... - person Tim Jahn; 15.12.2012
comment
Вот почему это комментарий, а не ответ: P Я вообще не знаю git Tower (даже не слышал о нем до вашего вопроса) ;) - person Nevik Rehnel; 15.12.2012