Я пробовал целый день, чтобы сделать простое слияние между функцией и разработкой.Объединение ветки, не создающей конфликтов для решения
В основном все, что я хочу, это возможность вручную объединить все конфликты функции в разработку, чтобы я мог получить новую функцию без разрушения.
Вот то, что я пытался до сих пор
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
Вот еще две полезные команды, которые я использовал во время экспериментов: git rebase --abort и git merge --abort – yosefrow