หนึ่งคำสั่งบัญชี 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
สิ่งที่ดีคือการที่คุณสามารถมีนามแฝงหลายเดียวกัน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@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'
ในขณะนี้เป็นเรื่องง่าย แต่จะใช้เวลานานสำหรับนักพัฒนาที่เราเป็น เราสามารถเขียนนามแฝงคอมไพล์ที่ง่ายมากสำหรับสิ่งนั้น
เรากำลังจะเพิ่มลงใน~/.gitconfig
ไฟล์
[user]
name = Arnaud Rinquin
email = rinquin.arnaud@gmail.com
...
[alias]
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
จากนั้นสิ่งที่เราต้องทำคือgit setpromail
เปลี่ยนอีเมลของเราสำหรับโครงการนี้เท่านั้น
ขั้นตอนที่ 3. สวิตช์คำสั่งเดียวโปรด!
มันจะดีหรือไม่ที่จะเปลี่ยนจากบัญชีเริ่มต้นเป็นบัญชีที่ระบุด้วยคำสั่งแบบไม่มีพารามิเตอร์เดียว? เป็นไปได้อย่างแน่นอน คำสั่งนี้จะมีสองขั้นตอน:
- เปลี่ยนรีโมทโครงการปัจจุบันเป็นนามแฝงที่เลือก
- เปลี่ยนการกำหนดค่าผู้ใช้โครงการปัจจุบันอีเมล
เรามีโซลูชันคำสั่งเดียวสำหรับขั้นตอนที่สองแล้ว แต่โซลูชันแรกนั้นยากกว่ากัน เปลี่ยนโฮสต์รีโมตคำสั่งเดียว
ต่อไปนี้เป็นวิธีแก้ปัญหาในรูปแบบของคำสั่ง 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\"
ลิงค์แหล่งที่มา -Tutorial