1

Давайте представим, что я подрядчик, который иногда работает над двумя проектами одновременно (один может быть техническим, другой может быть в разработке)

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

Как я могу справиться с этим лучше?

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

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

Возможно ли вместо этого запросить один из двух конфигурационных файлов «разных профилей» компании?

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

Это также иногда влияет на меня, когда я работаю из дома.

2 ответа2

2

Один из способов сделать это - сбросить локальный файл user.email и включить опцию user.useConfigOnly. Эта опция доступна начиная с git 2.8.

git config --global --unset-all user.email
git config --global --add user.useConfigOnly true

Эта конфигурация для каждого компьютера, поэтому вам нужно будет установить ее на каждом компьютере, к которому вы клонируете.

С этим набором фиксация завершится неудачей, потому что ваша электронная почта не установлена и автоопределение отключено.

$ git commit -m "Test"
fatal: no email was given and auto-detection is disabled

Затем для каждого нового хранилища настройте свой адрес электронной почты локально:

git config --local --add user.email "bob@nosuchemail.net"
0

В сочетании с ответом @NightSicarius можно использовать "условные включения" в конфигурации git.

Из комментариев на https://collectiveidea.com/blog/archives/2016/04/04/multiple-personalities-in-git

Теперь это еще проще с добавлением условных включений в Git v2.13. Вы можете использовать те же файлы структуры папок /.gitemail, которые вы упомянули, но ссылаться на них сверху вниз, а не относительно.

Если условие включения заканчивается на завершающий «/», путь рекурсивно сопоставляется со всеми подкаталогами, благодаря чему вся структура работает.

[includeIf «gitdir:C: /Apache2.2/htdocs/jm/»] путь = C: /Apache2.2/htdocs/jm/.gitconfig

Дополнительную информацию можно найти по адресу: https://git-scm.com/docs/git-config#_conditional_includes

И пример по адресу: https://stackoverflow.com/a/43884702/6798110

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .