Control Freak: коммит отклонен. Фокстрот слияния не допускается в Bitbucket - PullRequest
2 голосов
/ 14 марта 2019

Что именно является причиной Control Freak: Commit rejected. Foxtrot merges not allowed

Мы часто получаем эту ошибку, если она вызвана комбинацией pull, rebase и amend пользователями при фиксации?

Нужна ясность, чтобы навсегда избавиться от этого.Я знаю и понимаю, что ветвь разошлась, и она потеряла след, но то, что именно привело к тому, что это происходит на простом языке, очень заметно

Мы убиваем время, чтобы перебазировать каждый раз, когда мы видим эту ошибку.Мы вручную подбираем изменения, чтобы избавиться от этого.

Как идентифицировать зафиксированный тип, например, был ли правильный коммит после перебазировки, извлечения или изменения и какой именно коммит и кем? 1013 *

Мы хотим научить разработчиков выходить изподобные ошибки допускают впредь.Хотелось бы услышать о лучших практиках.

Кроме того, хотите понять, есть ли какая-либо причина для использования таких комбинированных инструментов, как git-bash / source-tree?

Можем ли мы отключить эту причину любымшанс?

enter image description here

Ответы [ 2 ]

2 голосов
/ 14 марта 2019

Относится к слияниям Foxtrot , специально запрещенным для BitBucket:

Слияние с фокстротом - это особая последовательность коммитов git.Особенно гнусная последовательность.На открытом, в пышных открытых лугах последовательность выглядит следующим образом:

https://developer.atlassian.com/blog/2016/04/stop-foxtrots-now/02-foxtrot.png

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

https://developer.atlassian.com/blog/2016/04/stop-foxtrots-now/foxtrot-redrawn.png

Фокстрот слияния плох, потому что они изменяют историю происхождения родителя / первоисточника мастера.

Родители коммитов слияния упорядочены.Первый родитель - ГОЛОВА.Второй родитель - это коммит, на который вы ссылаетесь с помощью команды git merge.

Вы можете думать об этом так:

git checkout 1st-parent
git merge 2nd-parent

Если нажата:

https://developer.atlassian.com/blog/2016/04/stop-foxtrots-now/05-foxtrot-pushed.png

0 голосов
/ 30 марта 2019

Самый простой способ избежать этой проблемы - всегда запускать «git pull --rebase» и никогда не запускать «git pull» по умолчанию. Вот глубокий пост в блоге о погружении: Слишком весело с "git pull --rebase"

Причина, по которой вы сталкиваетесь с этой проблемой, заключается в том, что ваша компания установила бесплатный плагин Control Freak для Bitbucket, и они оставили по умолчанию Foxtrot Prevention контроль включенным для всех филиалов.

Если вы используете Bitbucket Server 5.5 или новее, вы можете перебазировать pull-запросы прямо с экрана pull-запроса. Нажмите на кнопку «...» в правом нижнем углу экрана запроса на извлечение, и пункт меню «Rebase» должен быть доступен.

В качестве альтернативы вы можете попросить администратора отключить предотвращение фокстрота. Даже администраторы репо могут сделать это (не требует глобальных администраторов). Но я не рекомендую отключать этот элемент управления, поскольку он предотвращает грязную фиксацию истории.

Полное раскрытие: я написал и поддерживаю бесплатный плагин "Control Freak" для Bitbucket Server.

Примечание: перебазирование и исправление никогда не должны вызывать фокстротов. Обычно только «git pull» по умолчанию вызывает слияние фокстрот, и «git pull -r» - отличное средство. Команда «git merge» также может вызывать это, но люди редко могут случайно создать слияние фокстрота при использовании «git merge» в типичных сценариях, которые вызывают «git merge». Я подозреваю, что в 99% случаев именно «мерзавец» вызывает проблему.

...