Menugaskan Kekunci SSH ke Repositori Git
Situasi:
Anda mempunyai banyak repositori di platformGit
dan mahu set up kekunci SSH
untuk disebarkan (deployed) ke setiap repositori. Hal ini memudahkan proses mengemas kini perubahan yang berlaku pada direktori / fail yang terkandung di dalam projek.Sebagai contoh, ada dua projek / repositori; satu di
GitHub
dan satu lagi di GitLab
. Nama repositori di GitHub
ialah blog-hugo
manakala nama repositori di GitLab
ialah homes-app
.Set up git-config.
bash
git config --global user.name "nama-pengguna" git config --global user.email "alamat-emel-pengguna" git config --global pull.rebase false
Buat direktori
.ssh
di$HOME
.bash
mkdir .ssh
Jana kekunci
SSH
.bash
ssh-keygen -f .ssh/id_rsa_blog_hugo ssh-keygen -f .ssh/id_rsa_homes_app
Di web browser, tambahkan kedua-dua kunci SSH yang dijana dari kedua-dua sistem.
Di GitHub, pergi ke:-
- Repositori
blog-hugo
> Settings > Deploy keys > Add deploy key. - Masukkan Title. Di ruangan Key, salin kunci SSH dari fail
~/.ssh/id_rsa_blog-hugo.pub
dan tandakan kotak ‘Allow write access’. - Add key.
Di GitLab, pergi ke:-
- Project
homes-app
> Settings > Repository > Deploy Keys > Expand. - Masukkan Title. Di ruangan Key, salin kunci SSH dari fail
~/.ssh/id_rsa_homes-app.pub
dan tandakan kotak ‘Write access allowed’. - Add Key.
- Repositori
Kembali ke
terminal
, cipta fail~/.ssh/config
.Di GitHub:-
~/.ssh/config
# akaun untuk berkongsi fail di antara hos Arch dan tetamu FreeBSD di GitHub Host github.com-blog_hugo HostName github.com User pengguna IdentitiesOnly yes IdentityFile ~/.ssh/id_rsa_blog_hugo
Di GitLab:-
~/.ssh/config
# akaun untuk berkongsi fail di antara hos Arch dan tetamu FreeBSD di GitLab Host gitlab.com-homes_app HostName gitlab.com User pengguna IdentitiesOnly yes IdentityFile ~/.ssh/id_rsa_homes_app
Untuk klon repositori / projek, jalankan arahan berikut di
terminal
:-GitHub
bash
git clone git@github.com-blog_hugo:pengguna/blog-hugo.git
GitLab
bash
git clone git@gitlab.com-homes_app:pengguna/homes-app.git
Perhatikan,
github.com-blog_hugo
dangitlab.com-homes_app
selepasgit@
adalah sama denganHost
yang di-highlight-kan di fail~/.ssh/config
di atas.Sebagai contoh,
git clone
yang pertama kali dijalankan akan memberi pengeluaran berikut diterminal
:-Cloning into 'blog-hugo'... The authenticity of host 'gitlab.com (172.65.251.78)' can't be established. ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw. No matching host key fingerprint found in DNS. Are you sure you want to continue connecting (yes/no)? yes
Taip ‘yes’, dan pengeluaran seterusnya adalah,
Warning: Permanently added 'gitlab.com' (ECDSA) to the list of known hosts. remote: Enumerating objects: 59, done. remote: Counting objects: 100% (59/59), done. remote: Compressing objects: 100% (47/47), done. remote: Total 59 (delta 25), reused 32 (delta 9), pack-reused 0 Receiving objects: 100% (59/59), 18.04 KiB | 1.06 MiB/s, done. Resolving deltas: 100% (25/25), done.
Hal ini menandakan bahawa repositori / projek telah berjaya di-klon di sistem.
Jangan lupa untuk jalankan ‘
commit
’ dan ‘git push
’ setiap kali berlakunya sebarang perubahan kepada repositori / projek di sistem lokal. Saya tambah failcommit
sebagai satu skripzsh
yang diletakkan di dalam direktori utama projek / repositori sebagaimana berikut:-~/blog-hugo
#!/usr/bin/env zsh # Add changes to git. git add . # Commit changes. msg="update `date`" if [ $# -eq 1 ] then msg="$1" fi git commit -m "$msg" # Push source and build repos. git push -u origin main
Jadi selepas itu, apabila saya mahu kemaskini perubahan kepada repositori / projek, saya hanya perlu jalankan arahan berikut dari dalam direktori projek ini:-
bash
./commit
Selain itu, jika terdapat sebarang suntingan pada direktori / fail melalui akses repo di pelayar web, perlulah jalankan arahan ‘
git pull
’ terlebih dahulu di sistem lokal untuk mengemaskini perubahan sebelum memulakan kerja berkaitan.
Rujukan:
Lihat juga: