Переключатель учетных записей github одной команды
Это решение принимает форму единственного псевдонима git. После выполнения текущий пользователь проекта будет присоединен к другой учетной записи
Генерация ключей SSH
ssh-keygen -t rsa -C "rinquin.arnaud@gmail.com" -f '/Users/arnaudrinquin/.ssh/id_rsa'
[...]
ssh-keygen -t rsa -C "arnaud.rinquin@wopata.com" -f '/Users/arnaudrinquin/.ssh/id_rsa_pro'
Свяжите их с вашими учетными записями GitHub / Bitbucket
- скопировать открытый ключ по умолчанию
pbcopy < ~/.ssh/id_rsa.pub
- войдите в свой аккаунт GitHub
- вставьте ключ на
add SSH key
страницу github
- скопировать другой открытый ключ
pbcopy < ~/.ssh/id_rsa_pro.pub
- повторите и адаптируйте шаги со 2 по 4 для каждого другого аккаунта
Шаг 1. Автоматическое переключение по ssh-ключу.
Мы можем настроить ssh
использование определенного ключа шифрования в зависимости от host
. Приятно, что у вас может быть несколько псевдонимов для одного и того же hostname
.
Смотрите этот пример ~/.ssh/config
файла:
# Default GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# Professional github alias
Host github_pro
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_pro
Git Remote Configuration
Теперь вы можете использовать эти псевдонимы в git remotes, изменив git@github.com
на git@github_pro
.
Вы можете изменить существующие удаленные проекты (используя что-то подобное git remote set-url origin git@github_pro:foo/bar.git
) или адаптировать их напрямую при клонировании.
git clone git@github.com:ArnaudRinquin/atom-zentabs.git
используя псевдоним, он становится:
git clone git@github_pro:ArnaudRinquin/atom-zentabs.git
Шаг 2. Изменение git user.email
Настройки Git config могут быть глобальными или для каждого проекта. В нашем случае нам нужны индивидуальные настройки проекта. Это очень легко изменить:
git config user.email 'arnaud.rinquin@wopata.com'
Несмотря на то, что это легко, для разработчиков нам нужно много времени. Для этого мы можем написать очень простой псевдоним git.
Мы собираемся добавить его в ~/.gitconfig
файл.
[user]
name = Arnaud Rinquin
email = rinquin.arnaud@gmail.com
...
[alias]
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
Затем все, что нам нужно сделать, это git setpromail
изменить нашу электронную почту только для этого проекта.
Шаг 3. Один командный переключатель, пожалуйста ?!
Разве не было бы неплохо переключиться с учетной записи по умолчанию на указанную с помощью одной команды без параметров? Это определенно возможно. Эта команда будет состоять из двух шагов:
- изменить пульты текущего проекта на выбранные псевдонимы
- изменить текущий проект user.email config
У нас уже есть одно командное решение для второго шага, но первый намного сложнее. Одна команда удаленного изменения хоста
Вот решение в виде еще одной команды git alias, которую нужно добавить к вашему ~/.gitconfig
:
[alias]
changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
Это позволяет менять все пульты с одного хоста на другой (псевдоним). Смотрите пример:
$ > git remote -v
origin git@github.com:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin git@github.com:ArnaudRinquin/arnaudrinquin.github.io.git (push)
$ > git changeremotehost github.com github_pro
$ > git remote -v
origin git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (fetch)
origin git@github_pro:ArnaudRinquin/arnaudrinquin.github.io.git (push)
Объедините их всех
Теперь нам просто нужно объединить две команды в одну, это довольно просто. Посмотрите, как я также интегрирую переключение хостов Bitbucket.
[alias]
changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
gopro = !sh -c \"git changeremotehost github.com github_pro && git changeremotehost bitbucket.com bitbucket_pro && git setpromail\"
Ссылка на источник - Учебное пособие