2010-08-03 4 views
3

Вот мой сценарий:Git объединить различные имена файлов

Я работаю над исправлением ошибок в file1 в местном отделении. Мой коллега находится в своем собственном местном отделении, объединяя file1 в file2 в рефакторе. Он заканчивает свою работу и снова сливается с хозяином и толкает. Теперь file1 больше не существует в HEAD.

Когда я делаю попытку и пытаюсь объединить мои file1, изменения возвращаются в мастера, что произойдет? Является ли git достаточно умным, чтобы учесть это, или мне придется вручную объединить свои изменения?

+1

Создайте локальную ветку, чтобы выполнить слияние, чтобы вы могли узнать. – bstpierre

ответ

4

Во-первых, вы не сливаться файлы, вы объединяете ревизии (или, вернее, направления развития).

Во-вторых, мерзавец использует эвристический на основе сходства с обнаружить переименовывает, так что если file2 достаточно похож на file1, то мерзавец должен автоматически объединить ваши и его изменения в file2. Если нет, вы получите «CONFLICT (изменить/удалить)» (я думаю), вам придется решать вручную.

+1

Я сыграл и приготовил сценарий, который облегчает жизнь в случаях «CONFLICT (удаление/изменение)». Должен также работать для «КОНФЛИКТ (изменение/удаление)». Посмотрите: https://gist.github.com/894374 –

1

Это зависит от того, был ли там git mv file1 file2 ли git признать это как переименование? если бы он это сделал, тогда он мог бы распознать это ... иначе он, вероятно, просто попытается создать новый файл1. вам может потребоваться выполнить ручное слияние или патч слияния. Также это худший сценарий git TIAS, который вы откатываете слияние перед нажатием.

+2

Не имеет значения, был ли 'git mv'. Либо git распознает его как переименование, либо нет. – Cascabel

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