Одна команда переключения учетных записей 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
file:
# 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 config
Теперь вы можете использовать эти псевдонимы в 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.email
Настройки конфигурации Git могут быть глобальными или для проекта.В нашем случае нам нужны индивидуальные настройки проекта.Его очень легко изменить:
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)
Объедините их все
Теперь нам просто нужно объединить две команды в одну, это довольно просто.Посмотрите, как я также интегрирую коммутацию хоста битбакета.
[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\"
Ссылка на источник - Руководство