Как сообщить git использовать правильную идентификацию (имя и адрес электронной почты) для данного проекта?

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

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

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

Есть ли способ привязки определенного репозитория, имени проекта и т.д. к идентификатору (имя, адрес электронной почты)? Что делают люди?

Ответ 1

git config user.email "[email protected]"

Выполнение этой операции внутри репо установит конфигурацию на репозитории THAT, а не глобально.

Похоже на то, что вам нужно, если я неправильно понимаю вас.

Ответ 2

Отредактируйте конфигурационный файл в папке ".git", чтобы поддерживать различное имя пользователя и адрес электронной почты, зависит от репозитория

  • Перейти к вашему репозиторию
  • Показать скрытые файлы и перейти в папку ".git"
  • Найдите файл конфигурации
  • Добавьте следующие строки в EOF

[пользователь]

name = Bob

email = [email protected]

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

git config --get user.name

git config --get user.email

Пример: для моего файла конфигурации в D:\workspace\eclipse\ipchat \.git\config

Здесь ipchat - это мое имя репо

Ответ 3

Вам нужно использовать команду локального набора ниже:

локальный набор

git config user.email [email protected]
git config user.name 'Mahmoud Zalt'

локальный get

git config --get user.email
git config --get user.name

Локальный файл конфигурации находится в каталоге проекта: .git/config.

глобальный набор

git config --global user.email [email protected]
git config --global user.name 'Mahmoud Zalt'

глобальный get

git config --global --get user.email
git config --global --get user.name

Глобальный файл конфигурации в вашем домашнем каталоге: ~/.gitconfig.

Не забудьте указать пробелы и т.д., например: "FirstName LastName"

Ответ 4

Если вы используете git config user.email "[email protected]", он будет привязан к текущему проекту, в котором вы находитесь.

Это то, что я делаю для своих проектов. Я устанавливаю соответствующую идентификацию, когда я клонирую/запускаю репо. Это не безупречно (если вы забудете и нажмете, прежде чем вы выясните, что вы взволнованы), но он примерно так же хорош, как вы можете получить без возможности сказать git config --global user.email 'ILLEGAL_VALUE'

Собственно, вы можете сделать незаконную ценность. Установите git config --global user.name $(perl -e 'print "x"x968;')

Затем, если вы забудете указать свои неглобальные значения, вы получите сообщение об ошибке.

[EDIT] В другой системе мне приходилось увеличивать число x до 968, чтобы заставить его потерпеть неудачу с "фатальным: невозможным длинным личным идентификатором". Такая же версия git. Странно.

Ответ 5

Если вы не используете параметр --global, он будет устанавливать переменные только для текущего проекта.

Ответ 6

Как и в случае с Git 2.13, вы можете использовать includeIf в вашем gitconfig, чтобы включить файл с другой конфигурацией, основанный на пути репозитория, в котором вы выполняете команды Git.

Как только я его заработаю, я обновлю лучший пример.

https://motowilliams.com/conditional-includes-for-git-config#disqus_thread

Чтобы использовать Git 2.13, вам нужно будет добавить PPA (Ubuntu/Debian) или загрузить двоичные файлы и установить (Windows/другой Linux).