Получил ошибку git push: «Вы не можете отправить следующие коммиты, так как они созданы пользователями, неизвестными Stash по имени автора» - PullRequest
0 голосов
/ 20 июня 2019

Моя команда была git push -u origin feature_branch. Помимо сообщения об ошибке в заголовке, я также получил следующие сообщения:

Check your gitconfig has the correct author name, or contact an administrator

gitconfig правильный и просто для уверенности, что я скопировал имя пользователя и адрес электронной почты из bitbucket и попытался снова.

! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'ssh://companyname.com...'

Я проверил и подтвердил, что репо, к которому я обращаюсь, вообще не настроил ловушки предварительного получения.

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

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Это полная догадка, но ...

Хук предварительного получения на самом деле не может видеть ваш git config , он может видеть только имена пользователей и адреса электронной почты при коммитах. Ваш push-запрос (предположительно) просит их создать имя feature_branch. У них есть ловушка предварительного получения - вот откуда все это сообщение и ошибка - он видит ваш запрос на создание этого имени ветви и проверяет некоторый набор коммитов. Точно который набор коммитов и как проверяет их, известны только самому крючку предварительного получения. (Может быть полезно, если его диагностика скажет вам, какие коммиты ему не нравятся.) Но опять же, угадывая , я скажу, что они использовали:

git rev-list <hash-id> --not --all

, который получит им хэш-идентификаторы любых коммитов, доступных из кончика ветки, которую вы нажимаете, которые недоступны ни из одного из их собственных кончиков веток. Если вы запустите:

git fetch origin

, а затем:

git log --pretty=fuller feature_branch --not --remotes=origin

, который покажет вам, какие коммиты вы отправляете для своих feature_branch, которые не находятся ни в одной из их собственных ветвей, что будет набором коммитов, которые они проверяют. В --pretty=fuller ваш Git будет показывать вам строки автора и коммиттера для каждого такого коммита.

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

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

Check your gitconfig has the correct author name, or contact an administrator

Исходя из этого, мы - под этим я имею в виду и вас: все, кто не контролирует этот крюк предварительного получения - все должны угадать что их предварительно hook hook не любит, когда вы обращаетесь к Git с просьбой создать для Git имя feature_branch, указывающее на какой-то конкретный идентификатор хеша коммита.

0 голосов
/ 21 июня 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...