Satu perintah beralih akun github
Solusi ini mengambil bentuk alias git tunggal. Setelah dieksekusi, pengguna proyek saat ini akan dilampirkan ke akun lain
Buat kunci 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'
Tautkan ke akun GitHub / Bitbucket Anda
- salin kunci publik default
pbcopy < ~/.ssh/id_rsa.pub
- masuk ke akun GitHub Anda
- rekatkan kunci di
add SSH key
halaman github
- salin kunci publik lainnya
pbcopy < ~/.ssh/id_rsa_pro.pub
- ulangi dan sesuaikan langkah 2 hingga 4 untuk setiap akun lainnya
Langkah 1. Pergantian kunci ssh otomatis.
Kami dapat mengonfigurasi ssh
untuk mengirim penggunaan kunci enkripsi tertentu tergantung pada host
. Yang menyenangkan adalah Anda dapat memiliki beberapa alias untuk hal yang samahostname
.
Lihat contoh ~/.ssh/config
file ini:
# 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 konfigurasi jarak jauh
Anda sekarang dapat menggunakan alias ini di remote git dengan mengubahnya git@github.com
dengangit@github_pro
.
Anda dapat mengubah remote proyek yang ada (menggunakan sesuatu seperti git remote set-url origin git@github_pro:foo/bar.git
) atau menyesuaikannya secara langsung saat mengkloningnya.
git clone git@github.com:ArnaudRinquin/atom-zentabs.git
menggunakan alias, itu menjadi:
git clone git@github_pro:ArnaudRinquin/atom-zentabs.git
Langkah 2. Mengubah git user.email
Pengaturan konfigurasi git dapat bersifat global atau per proyek. Dalam kasus kami, kami menginginkan pengaturan per proyek. Sangat mudah untuk mengubahnya:
git config user.email 'arnaud.rinquin@wopata.com'
Meskipun ini mudah, perlu waktu lama bagi pengembang kami. Kita dapat menulis alias git yang sangat sederhana untuk itu.
Kami akan menambahkannya ke ~/.gitconfig
file.
[user]
name = Arnaud Rinquin
email = rinquin.arnaud@gmail.com
...
[alias]
setpromail = "config user.email 'arnaud.rinquin@wopata.com'"
Maka, yang harus kita lakukan adalah git setpromail
mengubah email kita untuk proyek ini saja.
Langkah 3. Tolong, satu saklar perintah ?!
Bukankah lebih baik untuk beralih dari akun default ke yang ditentukan dengan satu perintah parameter-kurang? Ini pasti mungkin. Perintah ini akan memiliki dua langkah:
- ubah remote proyek sekarang menjadi alias yang dipilih
- ubah konfigurasi user.email proyek saat ini
Kami sudah memiliki solusi satu perintah untuk langkah kedua, tetapi yang pertama jauh lebih sulit. Satu perintah perubahan host jarak jauh
Inilah solusinya dalam bentuk perintah alias git lain untuk ditambahkan ke Anda ~/.gitconfig
:
[alias]
changeremotehost = !sh -c \"git remote -v | grep '$1.*fetch' | sed s/..fetch.// | sed s/$1/$2/ | xargs git remote set-url\"
Ini memungkinkan mengubah semua remote dari satu host ke yang lain (alias). Lihat contohnya:
$ > 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)
Gabungkan semuanya
Kami sekarang hanya harus menggabungkan dua perintah menjadi satu, ini cukup mudah. Lihat bagaimana saya juga mengintegrasikan switching host bitbucket.
[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\"
Tautan Sumber -Tutorial