Я не уверен, насколько это просто. Если вы сделаете rebase -i
, он попытается игнорировать все слияния, которые успешно выполняются для слияний без конфликта, но останавливаются и ждут вас, если произошел конфликт.
Если вы вызовете его как rebase -i -p
, с другой стороны, он сохранит слияния, чего вы и хотите, когда пользователь совершил реальное слияние, но в противном случае полностью упускает точку.
Возможно, некоторая последовательность из двух команд, сохраняющая слияния только тогда, когда вы хотите, может выполнить работу в этом случае.
Я должен согласиться с Чарльзом, однако, что то, что история отражает реальность, гораздо ценнее, чем "красиво выглядеть". Дело в том, что один коммит был сделан без ведома другого, и в случае исходного кода это может сказать вам, почему что-то пошло не так.
Наша команда использует рабочий процесс git, основанный исключительно на слиянии
Что плохого в том, чтобы всегда тянуть с --rebase
(например, git pull -r
)? Если вам нужна плоская топология, самый простой способ - не объединять, когда вы можете выполнить ребазинг.
Также: вы говорите, что хотите сгладить только, если "слияние чистое". Я просто размышляю здесь, но я не думаю, что записи в git конфликтуют после факта, отличного от примечания в сообщении о фиксации по умолчанию, которого может и не быть.