Один командний перемикач рахунків 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\"
Посилання на джерело -Навчальний посібник