При смене почты в настройках GIT меняется автор коммитов

Здравствуйте.
Я проверяю почту один раз в никогда. По-этому, где-то месяц назад я подумал - какой смысл от того что она висит в коммитах? Решил сменить почту на что-то несуществующее. Написал: noname@nomail.com (visual studio)


Потом я месяц делал коммиты. Иногда пушил сразу, иногда не сразу. Вчера зашёл на гитхаб, чтобы посмотреть, как оно вообще выглядит. А там какая-то странная хрень. Все коммиты, которые я сделал при введённой почте noname@nomail.com принадлежат пользователю noname000100.
Сегодня создал тестовый проект и поэкспериментировал с почтами:

Действительно. На всех коммитах, сделанных с почтой noname@nomail.com на сайте отображается пользователь с ником noname000100, а не я :dizzy_face:
Но как? Почему?
То есть, если кто-то из вас введёт в настройки гита мою почту и в своём проекте сделает коммит, там я буду отображаться?

Если судить по этому ответу, то на гитхабе есть пользователь noname000100, у которого указана почта noname@nomail.com (можете посмотреть свои почты тут), и гитхаб связывает по почте эти коммиты с ним.

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

Коммиты от чужого имени - революционная инновация от GitHub :point_up: Всем российским аналогам надо взять на заметку

А нафига такие сложности? Я же логинюсь на гитхаб, ввожу свой пароль, их система это видит. Без логина пушить вообще нельзя, вроде :thinking: Значит, когда я что-то пушу, я это я. Не? Если нет, зачем тогда вообще логиниться для push?


А смысл, если в git log почту так и так видно? Можно скачать код и посмотреть почту в коммитах.

Просто гит – распределённая система управления версиями, а гитхаб – веб-сервис для хостинга проектов. У них разная идеология. У коммита есть не только автор, но и коммитер, которые в общем случае могут отличаться. Допустим, AlexP скинул вам кусочек кода, а вы его заккомитили в свою ветку. Тогда автором будет AlexP, а вы коммитером. У гита нет возможности проверить, кто на самом деле является автором и коммитером кода – как описали, так система и записала в коммит. А чтобы не было ситуации, когда плохой человек добавил вредоносный код, представляясь другим человеком, применяется подписывание коммита. У злоумышленника нет закрытого ключа для подписи (только если ключ не украдут), чтобы прикинуться хорошим разработчиком. А с точки зрения гитхаба у вас должны быть права для редактирования определённого репозитория (поэтому логинитесь), но вы вообще можете быть ни автором, ни коммитером, а являетесь пушером (тот, кто загрузил изменения на сервер).

Например, если сами код не пишите, а только принимаете чужие пулл-реквесты через web-интерфейс. Не проверял, но, наверное, в истории гита тогда тоже будет прописываться подставной адрес.

Тогда вижуалка могла бы предупреждать об этом сразу в своём GUI. Тем более, это community версия. А значит, предполагается, что её будут использовать нубасы, вроде меня.

О чем именно? При первичной настройке репозитория студия, наверное, предложила указать имя и электронную почту пользователя. Забота о приватности не входит в цели студии. Можно попробовать указать пустую электронную почту или взять приватную почту, которую предложил гитхаб. С помощью git-filter-repo переписать коммиты и форспушнуть на сервер.

О том, что на сайте (github) автор коммита будет привязан к введённой почте, несмотря на то, что во время коммита я был залогинен в свой аккаунт. По-моему, об этом стоит предупредить. Ведь введённый в поле “почта” текст никак не проверяется и можно ввести что угодно.

Спасибо. Но через git-filter-repo не получилось. Получилось через filter-branch.
Коммиты починились. Но юзер noname остался в списке контрибьюторов. Как его убрать?

Поэтому есть возможность подписывать коммиты ключом ) Generating a new GPG key - GitHub Docs
Тогда не получится указать чужую почту на гитхабе.
У подписанных есть особая иконка, еще можно запретить неподписанные коммиты в репозитории или организации.

Хоть гитхаб и вижуал студия и принадлежат майкрософту, но отвечают за их разработку, скорее всего, разные команды. Показ аккаунта пользователя в описании коммита в веб-интерфейсе гитхаба (вместо имени и почты) служит для упрощения взаимодействия с сайтом. Можно сразу идти по цепочке, просто кликая: коммит, аккаунт автора, открытые репозитории автора. Это совсем не дело команды вижуал студии – отслеживать, на каком хостинге проектов как и что отображается.

Сам не пробовал, но советуют переименовать ветку через веб-интерфейс гитхаба (https://github.com/[user]/[repo]/branches) туда-обратно, тогда контрибьюторы “пересчитаются”.

Это как в СССР пытались построить свою цифровую империю. Процессоры и софт для них тоже делались разными командами, сидящими в засекреченных бункерах на противоположных сторонах планеты. Контакт друг с другом и обмен тех.данными был запрещён, иначе расстрел, а потом смертная казнь и ущемление прав.

На всех хостингах и не надо. Надо только на гитхабе, раз уж и то и другое - майкрософт и требуется логиниться.

Да, я видел. Но думал, может есть нормальный способ.
Спасибо.

Можно более радикально – удалить репозиторий с гитхаба, создать заново и пушнуть чистую версию :laughing:.

Это ещё менее нормальный способ