Несколько учетных записей git

Недавно я переустановил linux на своем старом ноутбуке. И я хотел настроить git таким образом, чтобы можно было управлять несколькими учетными записями. По сути, я хотел иметь возможность делать git pull & push, не набирая каждый раз имя пользователя и пароль.

Итак, я немного погуглил и нашел хорошую отправную точку — сделать разделение по каталогам. Пример: ~/code/work/ и ~/code/personal/ — для работы и личного использования соответственно.

Все хорошо, но я хочу иметь учетную запись по умолчанию, доступную из каталога HOME ~/ для .dotfiles и других вещей. А затем в ~/code/[USER]/ — переключаться на другую учетную запись для конкретного использования.


Пусть у нас будет два пользователя: Diogenes (по умолчанию) и Epicurus (вторичный).

После установки git я настроил его как обычно.

git config --global user.name "Diogenes the Cynic"
git config --global user.email diogenes@example.com

git config --global credential.helper store
Войти в полноэкранный режим Выйти из полноэкранного режима

Последняя строка просто говорит git хранить учетные данные в файле по умолчанию, ~/.git-credentials. Это файл, в котором я размещаю персональный маркер доступа (PAT) для учетной записи по умолчанию (Diogenes). Обратите внимание, что все это в виде обычного текста, так что это не безопасно. Но я готов пойти на риск, к тому же я не храню пароли, только PAT. PAT на самом деле довольно хорошая идея. Я могу создать его с ограниченными/минимальными правами, только права на чтение/запись, и использовать в своем ноутбуке (где я могу экспериментировать с вещами). Так что даже если PAT будет украден или что-то в этом роде, мой пароль будет в безопасности. Я просто отзываю этот PAT.

Формат: https://[USERNAME]:[ACCES_TOKEN]@[gitlab.com | github.com]. Итак, я захожу на gitlab, создаю PAT и добавляю следующую строку.

https://diogenes:super-secure-PAT@gitlab.com
Войти в полноэкранный режим Выйти из полноэкранного режима

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

До этого момента ~/.gitconfig выглядел следующим образом:

[user]
  name = Diogenes
  email = diogenes@example.com

[credential]
  helper = store
Войти в полноэкранный режим Выход из полноэкранного режима

Теперь пришло время добавить новую учетную запись, Epicurus.

Во-первых, я создаю новый каталог ~/code/epicurus/.

Во-вторых, я добавляю в ~/.gitconfig строки, которые говорят git применять различные конфигурации в зависимости от директории, в которой я сейчас нахожусь.

[includeIf "gitdir:~/code/epicurus/"]
  path = ~/code/epicurus/.gitconfig
Войти в полноэкранный режим Выйти из полноэкранного режима

В-третьих, я настраиваю нового git-пользователя ~/code/epicurus/.gitconfig и указываю, где найти учетные данные.

[user]
  name = Epicurus
  email = epicurus@example.com

[credential]
  helper = store --file=/home/diogenes/code/epicurus/.git-credentials
Вход в полноэкранный режим Выход из полноэкранного режима

В-четвертых, я беру PAT и сохраняю его в ~/code/epicurus/.git-credentials.

https://epicurus:[ACCES_TOKEN]@gitlab.com
Войти в полноэкранный режим Выйти из полноэкранного режима

И теперь в дереве каталогов ~/code/epicurus/ я могу git pull & push на gitlab, не вводя credentials как Epicurus, и везде как Diogenes.


Структура файла

.git-credentials
.gitconfig

└─ code
   └─ epicurus
      ├─ .git-credentials
      └─ .gitconfig
Вход в полноэкранный режим Выход из полноэкранного режима

Содержание

~/.gitconfig

[user]
  name = Diogenes
  email = diogenes@example.com

[credential]
  helper = store

[includeIf "gitdir:~/code/epicurus/"]
  path = ~/code/epicurus/.gitconfig
Войти в полноэкранный режим Выход из полноэкранного режима

~/.git-credentials

https://diogenes:[ACCES_TOKEN]@gitlab.com
Войти в полноэкранный режим Выход из полноэкранного режима

~/code/epicurus/.gitconfig

[user]
  name = Epicurus
  email = epicurus@example.com

[credential]
  helper = store --file=/home/diogenes/code/epicurus/.git-credentials
Войти в полноэкранный режим Выход из полноэкранного режима

~/code/epicurus/.git-credentials

https://epicurus:[ACCES_TOKEN]@gitlab.com
Вход в полноэкранный режим Выход из полноэкранного режима

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *