я случайно есть файл (скажем ABC) в двух ветвей: мастер и образца.мерзавец автоматического слияния не работает, как ожидалось
дата фиксации для аЬс на образце старше аЬс на текущем мастер; другими словами abc последний на мастер.
Теперь, я побежал:
git checkout sample
git merge master
Автопоиск объединенное несколько файлов (включая аЬс).
Задача: Line # 42 в аЬс, кажется, сохраняется от ветви образца вместо получения замененного от мастера.
Почему это происходит? Я ожидал иначе. Пожалуйста помоги.
Является ли git merge не похожим на объединение двух версий файла с конфликты возникают, если есть перекрытие в линиях?Почему в моем случае не было конфликта слияния? Вместо этого автоматически слияние .... @ michael-ivko – 82Tuskers
@ 82Tuskers: Если трехстороннее слияние git смогло слить его должным образом, почему возникает конфликт слияния? Просто будьте рады, что git смог объединить его без каких-либо проблем. И если ваша главная ветвь развивалась дальше, а «образец» - нет, ее еще проще для git с быстрым слиянием. – ckruczek
@ 82Tuskers: merge не образует союзы * файлов *, а скорее применяет объединение * diffs * к версии слияния некоторых файлов (ов). База слияния определяется следующей историей фиксации, после которой git получает два diff: base-vs-HEAD (и HEAD = tip образца здесь) и base-vs-merge-version (master). Затем Git объединяет различия. Если base-vs-HEAD изменил строку 42, но base-vs-master не сделал этого, git сохранит изменение от HEAD (т. Е. Sample). Вы получаете конфликт только тогда, когда и образец, и мастер изменили строку 42 (против того, что было в базе) * и * два изменения * разные *. – torek