Один командний перемикач рахунків 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 віддаленої конфігурації
Тепер ви можете використовувати ці псевдоніми в GIT пультах, змінюючи з 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 можуть бути глобальними або за проектом. У нашому випадку ми потребуємо налаштувань кожного проекту. Це дуже легко змінити:
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 проекту
У нас вже є одне командне рішення для другого кроку, але перший - складніше. Зміна віддаленого хоста однієї команди
Тут з'являється рішення у вигляді іншої команди 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\"
Посилання на джерело -Навчальний посібник