Авто слияние на пульте, если нет конфликтов

Есть ли способ автоматически принять и объединить push, если нет конфликтов?

Я знаю, что это плохая практика, но я имею в виду особый случай, когда периферийные git-репо обновляются ботами

1 ответ

Есть ли способ автоматически принять и объединить push, если нет конфликтов?

Поток рассуждений должен быть обращен вспять - вы можете знать, что нет никаких конфликтов после попытки слияния. Объединение необходимо, когда локальные и удаленные деревья расходятся - и это расхождение обнаруживается на удаленном устройстве только после того, как вы попытаетесь протолкнуть, то есть после того, как вы перенесете свое локальное дерево на удаленное устройство. В этом случае для git на удаленной стороне было бы обычным отклонять push, чтобы позволить вам разобраться в различиях - вы находитесь в лучшем положении для этого на стороне клиента, а не на удаленной стороне.

Если вы уверены, что нет никаких конфликтов, вы можете довериться git pull - он сливается с FETCH_HEAD в режиме по умолчанию. Например,

git pull --no-edit
git push

--no-edit Опция не приветствуется, но позволит избежать выгрузки в редактор, принимая сообщение о слиянии по умолчанию. Вы можете использовать псевдонимы "две в одну", которые не будут выполнены, если слияние не будет успешно выполнено,

git config alias.merge-n-push '!f() { git pull --no-edit && git push; }; f'

Я не могу гарантировать, что в то время как я сделаю тянуть и слить, ничего не изменится на удаленном

Конечно, вы не можете, git - это распределенная система контроля версий, и такая гонка присуща и даже желательна. Подход, который каким-то образом блокирует пульт, пока он решает, что и как объединять, не будет идиотским. Вы должны просто толкать и тянуть и толкать, пока вы не добьетесь успеха. И на практике это редко является проблемой, так как в худшем случае вы можете попросить своих пиров подождать, пока вы закончите сложное объединение / пуш.

Тем не менее, вы можете несколько смягчить это, проверив пульт: Как узнать, что локальное репо отличается от удаленного репо без извлечения?

Другие вопросы по тегам