Bir komut github hesapları anahtarı
Bu çözüm, tek bir git takma adı biçimini alır. Yürütüldüğünde, mevcut proje kullanıcısı başka bir hesaba eklenir
Ssh anahtarları üret
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'
Onları GitHub / Bitbucket hesaplarınıza bağlayın
- varsayılan ortak anahtarı kopyala
pbcopy < ~/.ssh/id_rsa.pub
- GitHub hesabınıza giriş yapın
- anahtarı
add SSH key
github sayfasına yapıştır
- diğer ortak anahtarı kopyala
pbcopy < ~/.ssh/id_rsa_pro.pub
- diğer tüm hesaplar için 2-4. adımları tekrarlayın ve uyarlayın
Adım 1. Otomatik ssh tuşu değiştirme.
ssh
Öğesine bağlı olarak belirli bir şifreleme anahtarı kullanmak üzere yapılandırabiliriz host
. Güzel olan şey, bunun için birkaç takma adınız olabilir hostname
.
Bu örnek ~/.ssh/config
dosyaya bakın :
# 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 uzaktan yapılandırma
Artık değiştirerek git uzaktan kumanda bu takma adları kullanabilirsiniz git@github.com
tarafından git@github_pro
.
Mevcut proje uzaktan kumandalarınızı değiştirebilir (benzer bir şey kullanarak git remote set-url origin git@github_pro:foo/bar.git
) veya klonlarken doğrudan uyarlayabilirsiniz.
git clone git@github.com:ArnaudRinquin/atom-zentabs.git
takma ad kullanarak, olur:
git clone git@github_pro:ArnaudRinquin/atom-zentabs.git
Adım 2. git user.email öğesini değiştirme
Git yapılandırma ayarları genel veya proje başına olabilir. Bizim durumumuzda, proje başına ayarlar istiyoruz. Bunu değiştirmek çok kolay:
git config user.email 'arnaud.rinquin@wopata.com'
Bu kolay olsa da, olduğumuz geliştiriciler için özlem ister. Bunun için çok basit bir git takma adı yazabiliriz.
~/.gitconfig
Dosyaya ekleyeceğiz .
[user]
name = Arnaud Rinquin
email = rinquin.arnaud@gmail.com
...
[alias]
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
Ardından, tek yapmamız gereken git setpromail
e-postamızın sadece bu proje için değiştirilmesini sağlamaktır.
Adım 3. Bir komut anahtarı lütfen ?!
Tek bir parametresiz komutla varsayılan hesaptan belirli bir hesaba geçmek hoş olmaz mıydı? Bu kesinlikle mümkün. Bu komutun iki adımı olacaktır:
- mevcut proje kumandalarını seçilen takma adlarla değiştir
- mevcut projeyi değiştir user.email config
İkinci adım için zaten tek bir komut çözümümüz var, ancak birincisi çok daha zor. Bir komut uzak ana bilgisayar değişikliği
İşte çözüm eklemek için başka bir git alias komutu şeklinde çözüm geliyor ~/.gitconfig
:
[alias]
changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
Bu, tüm uzaktan kumandaların bir ana bilgisayardan diğerine (takma ad) değiştirilmesine izin verir. Örneğe bakın:
$ > 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)
Hepsini birleştirin
Şimdi iki komutu bir araya getirmemiz gerekiyor, bu oldukça kolay. Bitbucket ana bilgisayar anahtarlamasını nasıl entegre ettiğimi görün.
[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\"
Kaynak Bağlantısı - Eğitim