Git объединяет различные функции, которые были изменены те же файлы - PullRequest
1 голос
/ 28 июня 2019

В настоящее время я тестирую с использованием веток функций в моем потоке git Допустим, у меня есть текущий стабильный скрипт.

текущая стабильная версия для собаки на ветке разработчика

    file 1
    ---------
    function bark() {
        return 'the dog is barking';
    }

    function walk() {
        return 'the dog is walking'
    }


    file 2
    ---------
    Action

    <button type="submit" name="button1">Play</button>

    <button type="submit" name="button2">Play</button>

    if($_POST["button1"]) {
        bark();
    }

    if($_POST["button2"]) {
        walk();
    }

Затем Питера попросили добавить новую функцию cat, такую ​​же, как current stable version for dog. Итак, Питер делает клон current stable version для новой ветви функций под названием features/cat. Питер изменит весь код current stable version.

Питер клонирует текущую стабильную версию в Features / cat и уже изменил текущую стабильную версию

    file 1
    -----------------------------
    function animalSound($animals = []) {
        $result = [];
        foreach($animals as $animal) {
            if($animal == 'cat') {
                $sound = 'meowing';
            } else if($animal == 'dog') {
                $sound = 'barking';
            }

            $result[] = 'The ' . $animal . ' is ' . $sound. 
        }

        return $result;
    }

    function animalWalk($animals = []) {
        $result = [];

        foreach($animals as $animal) {
            $result[] = 'The ' . $animal . ' is walking';
        }
    }


    file 2
    ---------
    Action

    <button type="submit" name="button1">Play</button>

    <button type="submit" name="button2">Play</button>

    if($_POST["button1"]) {
        bark(['dog', 'cat']);
    }

    if($_POST["button2"]) {
        walk(['dog', 'cat']);
    }

Мы предполагаем, что Питер не полностью создал сценарий, и теперь я попросил Сьюзен создать функцию run для current stable version для собаки. Затем Сьюзен делает клон current stable version в новую ветвь функций под названием features/dogrun

Сьюзен: Особенности / Dogrun

    file 1
    ----------------
    function bark() {
        return 'the dog is barking';
    }

    function walk() {
        return 'the dog is walking'
    }

    // add run feature
    function run() {
        return 'the dog is running';
    }

    file 2
    ---------
    Action

    <button type="submit" name="button1">Play</button>

    <button type="submit" name="button2">Play</button>

    // menambah fitur run
    <button type="submit" name="button3">Play</button>

    if($_POST["button1"]) {
        bark();
    }

    if($_POST["button2"]) {
        walk();
    }

    // add run feature
    if($_POST["button3"]) {
        run();
    }

Допустим, Сьюзен уже закончила сборку run feature, и эта функция уже в производстве. Сейчас Peter: features/cat уже находится в стадии подготовки и готов к производству. как объединить Peter: features/cat и Susan: features/run? между функциями весь код изменился и не может быть объединен. если Peter: features/cat слиться с главной веткой (производство) первым, Susan: features/run больше не будет работать.

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

1 Ответ

1 голос
/ 28 июня 2019

Вы не должны объединять эти ветви, если они связаны с конфликтами.

Питер должен, когда будет готов, перебазировать свои функции / cat поверх последней производственной ветки master, чтобы локально воспроизвести (на своей рабочей станции) свои features/cat коммиты.

Конфликты возникнут там (в среде Петра) и разрешатся там (Петром)

Последующее слияние с master будет тривиальным.

...