2016-06-06 2 views
1

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

В основном все, что я хочу, это возможность вручную объединить все конфликты функции в разработку, чтобы я мог получить новую функцию без разрушения.

Вот то, что я пытался до сих пор

git checkout develop; git merge feature 
git checkout feature; git merge -s ours develop 
git checkout feature; git merge -s recursive -X ours develop 
git checkout develop; git merge -s recursive -X theirs feature 
git checkout develop; git merge -s recursive -X theirs feature 
git checkout feature; git merge -s resolve develop 

Во всех этих случаях либо ветвь почти полностью перекрывает все остальные. Мне не дают возможность вручную слить конфликты внутри файлов.

git checkout feature; git rebase develop 

mergetool вызывается для некоторых файлов, но отличия в одном файле не распознаются. Следует отметить, что этот файл ранее был объединен в разработку некоторое время назад. Файлы, которые были удалены при разработке, все еще присутствуют в функции, но с расширением 'orig'. Это самое близкое к тому, что я дошел до синхронизации обоих ветвей, но ценой того, что вы не сможете легко там, где функция больше отключается.

git checkout develop; git rebase feature 

дает кучу вариантов, чтобы удалить или сохранить файлы, а затем приводит к ошибке: file not found Continue merging other unresolved paths (y/n) ? y

Я попытался нету Cherrypicking или сиротой деревья еще. Возможно, решение там?

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

Нужно ли ручное слияние при каждом добавлении новой функции? Трудно сделать Git - how to force merge conflict and manual merge on selected file

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

Где я ошибся? Как разрешить эту ситуацию (без ручного редактирования файлов)? И что я должен делать по-другому в следующий раз?

P.S. То, кто новичок в git и испытывает подобные проблемы в обучении использованию таких преобразований, как merge и rebase git reflog feature-name и git reset --hard [email protected]{n} - бесценные команды. (всегда используйте - безотлагательно, поскольку он отбрасывает локальные изменения)

EDIT: Хотя я до сих пор не знаю, почему это произошло, VonC предложил хорошее решение для стоп-лосса.

Для тех, кто интересно, как вы проверки от местного отделения на новый вид локальной папки на этом посте: https://stackoverflow.com/a/16493707/6419701

Как я провел слияние с отличным meld tool для убунта, используя следующий синтаксис: meld folder1 folder2

+0

Вот еще две полезные команды, которые я использовал во время экспериментов: git rebase --abort и git merge --abort – yosefrow

ответ

1

в текущей ситуации, я бы:

  • контроля feature филиала в новом пути на диске,
  • сливаются две ветви (develop и feature) с инструментом Diff (kdiff3 или другой) за пределами мерзавец (т.е. не мерзавец слияния, только некоторые старые моды папку сравнения/слияния), и Ыборка .orig файлы,
  • регистрирующих слияние от разработки до feature с git merge --ours develop.

Тогда, только для тестирования, я хотел бы сделать одновременное изменение на тот же файл в двух ветвях и посмотреть, если git merge develop делает работу и довести шаг разрешения конфликтов традиционного git merge.

+0

Хотя это хорошее решение последней инстанции, ручное объединение файлов по одному - это то, что им пытаясь избежать. Я хотел бы иметь возможность использовать git в будущем и не менять вручную все. Я просто пытаюсь понять, почему ничего не работает. Моя теория прямо сейчас заключается в том, что файл, который не был включен в rebase, не был вызван тем, что после его разветвления не было никаких изменений. Так как rebase заменяет модификации над базой. – yosefrow

+0

@yosefh не теряйте больше времени: ручная слияния + запись слияния равна: вы начинаете с свежего. – VonC

+0

VonC, я очень ценю ваши усилия, чтобы помочь мне. Но я пытаюсь понять, что я сделал неправильно, поэтому я могу избежать этого в будущем и попытаться исправить его, если это возможно. Вы абсолютно правы, хотя для получения результатов практическое решение состоит в том, чтобы просто вручную объединить один файл за раз. – yosefrow