Это является вопрос, касающийся фундаментальное поведение git. Вы хотите объединить изменения из ветки в другую ветку, обрабатывая удаления как «без изменений».Но в принципе, я думаю, это невозможно, потому что git рассматривает удаления как изменения и, следовательно, отображает удаления при слиянии.
В вашем конкретном случае мастер по-прежнему содержит файлы file3.txt, file4.txt, file5.txt, и эти 3 файла в каком-либо смысле не модифицированы мастером ветвления.
Но в ветке 'edit_branch' они были удалены (желательно git rm) и, следовательно, изменены на edit_branch.
Итак, теперь, если вы объедините «edit_branch» в master, git увидит, что мастер в основном является предком-фиксацией edit_branch и, следовательно, сделает быстрое переключение, просто назначив последнюю фиксацию edit_branch как master. Это означает, что он всегда будет отражать удаления.
Но если файлы на master изменены после создания edit_branch, тогда git по крайней мере покажет слияние CONFLICTS на удаленных файлах, сообщив вам о том, какие файлы были удалены и, следовательно, необходимо позаботиться.
Итак, в принципе нет прямого способа делать то, что вы хотите сделать. Но вероятным обходным решением было бы сделать некоторые фиктивные модификации (например, добавление единого пробела в конце/или запись комментария, объясняющего, почему было сделано изменение) для всех файлов на главном компьютере сразу после создания edit_branch. Тогда даже если вы переключитесь на edit_branch и случайно удалите некоторые файлы, по крайней мере, вы получите уведомление об этом во время слияния и получите возможность обработать его до слияния.
Я хотел бы добавить, что такие сценарии удаления-слияния никогда не являются действительно полезными ни в каких известных случаях использования. Когда вы удаляете некоторые файлы в ветке только для того, чтобы сохранить каталог в чистоте и сделать отрасль намеренно отличной от ядра, вы не объедините ее в ядро после этого. Например, в случае github-страниц мы создаем ветви gh-pages и удаляем каждый файл, отличный от веб-страниц в этой ветке, эффективно скрывая ненужный контент от ветки. Но мы не находим необходимости объединять gh-страницы с ведущими.
PS. Если вы вернетесь домой во время созыва, подумайте о покупке мне пива :)
Благодарю вас за подробное объяснение. Но это все еще не решает проблему. Самое близкое, что у меня было, - это создать только модифицированные и добавленные файлы для фиксации и в некотором смысле сделать частичное слияние с мастером. Обходной путь легко пропустить. Прокладывает ручные шаги. : | –
i не похоже, что есть прямое решение этой проблемы :( –