Git неправильно слияния - PullRequest
       8

Git неправильно слияния

0 голосов
/ 17 января 2019

Я объясняю проблему

Вот мой фактический мерзавец

enter image description here

У меня проблема с mergin, файл, возвращенный в красную ветвь, игнорируется при слиянии с синей ветвью4.

По сути, мы начали работать над функцией на красной ветке, затем решили изменить ветку, и чтобы красная ветка стала «чистой» без ошибок, мы отменили первоначальные изменения для функции.

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

Существует множество переименований / удалений файлов и изменений.

Теперь, когда я сливаю синий и красный, половина изменений не сохраняется, и даже не возникает конфликтов.

Я сделал еще одну ветку (давайте назовем ее фиолетовой) с ТОЧНО чем мы хотим, и я хотел бы знать, что есть способ толкнуть фиолетовую ветвь в красной ветке, чтобы сохранить именно то, что находится в фиолетовой филиал

1 Ответ

0 голосов
/ 17 января 2019

Исправлено red ветвь (история не будет изменена): Один из способов - вернуть revert-commit-1 & revert-commit-2, а затем объединить blue ветвь в red ветвь.

$ git checkout red   # checkout to 'red' branch
$ git log            # copy the 'revert-commit-2' & 'revert-commit-1' commit hash

$ git revert <revert-commit-2-hash>
$ git revert <revert-commit-1-hash>

$ git pull origin blue              # merge the blue branch changes

Другой способ: Заменить текущую ветвь red веткой purple (red история ветвей будет изменена)

# first backup the 'red' branch for just safety
$ git checkout red
$ git branch red.bac

# replace red branch with purple branch
$ git checkout purple
$ git branch -D red    # delete 'red' branch
$ git checkout -b red  # create & checkout to new local 'red' branch with 'purple' branch history

# now if you pushed the 'red' branch already then you need to do force (-f) push otherwise do normal push
$ git push -f origin red
...