Статьи

Pimp my Git — Управление разными Git-идентичностями

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

  1. Клонировать новый репозиторий.
  2. Перейти в клонированный репозиторий.
  3. git config user.email sparsick @ web.de`

Я никогда не был доволен этим решением, но оно работает. К счастью, твит @BenediktRitter и один из @wosc предлагают две альтернативы моему методу.

Первый метод основан на функции Git «Условные включения» (требуется версия Git как минимум 2.13). Идея состоит в том, что вы определяете идентичность Git по умолчанию и отдельные идентификаторы Git для конкретного каталога. Это означает, что каждый репозиторий, который клонируется под одним из определенных каталогов, автоматически имеет свои идентификаторы Git.

Второй метод основан на скрипте Python, вдохновленном расширением Mercurial hg-persona. Идея заключается в том, что вы можете индивидуально установить идентичность Git для каждого репозитория Git. Это замена одной команды для пользователя git config. * Command serie.

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

Суммируйте идентичность Git для нескольких репозиториев Git

Как описано выше, этот метод основан на функции Git «Условные включения». Поэтому убедитесь, что вы установили свой Git-клиент как минимум в версии 2.13. Предположим, мы хотим иметь две идентичности Git, одну для Github и одну для работы. Поэтому создайте два файла .gitconfig в вашей домашней папке.

1
2
touch ~/.gitconfig_github
touch ~/.gitconfig_work

Затем добавьте конкретный идентификатор Git в соответствующие файлы .gitconfig .

1
2
3
4
5
~/.gitconfig_github
 
[user]
   name = YourNameForGithub
   email = [email protected]
1
2
3
4
5
~/.gitconfig_work
 
[user]
   name = YourNameForWork
   email = [email protected]

Следующим шагом является добавление этих двух файлов .gitconfig в наш глобальный и указание, когда их использовать.

01
02
03
04
05
06
07
08
09
10
11
~/.gitconfig
 
[user]
   name = defaultName
   email = [email protected]
 
[includeIf "gitdir:~/workspace_work/"]
   path = .gitconfig_work
 
[includeIf "gitdir:~/workspace_github/"]
   path = .gitconfig_github

Теперь каждый репозиторий, клонированный под ~ / workspace_work /, автоматически имеет идентификатор Git для Work ( .gitconfig_work ), а каждый репозиторий, клонированный под ~ / workspace_github / , автоматически имеет идентификатор Git для Github ( .gitconfig_github ). В противном случае используется идентификатор Git по умолчанию.

Настройка идентификатора Git индивидуально для каждого репозитория Git

Для второго способа вы должны установить ws.git-persona из PyPI.

1
2
sudo apt-get install pip # if PyPI isn't install
pip install ws.git-persona

Затем откройте свой глобальный ~ / .gitconfig и добавьте свои персоны. В наших случаях мы добавляем две персоны, одну для Github и одну для работы.

1
2
3
4
5
~/.gitconfig
 
[persona]
  github = YourNameForGithub <[email protected]>
  work = YourNameForWork <[email protected]>

На следующем шаге мы хотим переключить нашу идентичность Git в репозитории Git. Теперь это возможно с помощью команды git-persona . В следующем примере мы переключаемся на идентификатор для Github, а затем на идентификатор для работы.

01
02
03
04
05
06
07
08
09
10
11
12
> git-persona -n github
Setting user.name="YourNameForGithub", user.email="[email protected]"
> git config user.name
YourNameForGithub
> git config user.email
> git-persona -n work
Setting user.name="YourNameForWork", user.email="[email protected]"
> git config user.email
> git config user.name
YourNameForWork

Если у вас есть другие методы для управления разными идентификаторами Git, дайте мне знать об этом и напишите комментарий.

связи

  1. Сообщение в блоге о функции Git «Условные включения».
  2. Github хранилище git-персон.