Git - Buat Operasi
Di bab ini, kita akan melihat cara membuat repositori Git jarak jauh; mulai sekarang, kami akan menyebutnya sebagai Git Server. Kami membutuhkan server Git untuk memungkinkan kolaborasi tim.
Buat Pengguna Baru
# add new group
[root@CentOS ~]# groupadd dev
# add new user
[root@CentOS ~]# useradd -G devs -d /home/gituser -m -s /bin/bash gituser
# change password
[root@CentOS ~]# passwd gituser
Perintah di atas akan menghasilkan hasil sebagai berikut.
Changing password for user gituser.
New password:
Retype new password:
passwd: all authentication token updated successfully.
Buat Repositori Telanjang
Mari kita inisialisasi repositori baru dengan menggunakan init perintah diikuti oleh --barepilihan. Ini menginisialisasi repositori tanpa direktori kerja. Secara konvensi, repositori telanjang harus dinamai sebagai.git.
[gituser@CentOS ~]$ pwd
/home/gituser
[gituser@CentOS ~]$ mkdir project.git
[gituser@CentOS ~]$ cd project.git/
[gituser@CentOS project.git]$ ls
[gituser@CentOS project.git]$ git --bare init
Initialized empty Git repository in /home/gituser-m/project.git/
[gituser@CentOS project.git]$ ls
branches config description HEAD hooks info objects refs
Hasilkan Pasangan Kunci RSA Publik / Pribadi
Mari kita ikuti proses konfigurasi server Git, ssh-keygen utilitas menghasilkan pasangan kunci RSA publik / pribadi, yang akan kita gunakan untuk otentikasi pengguna.
Buka terminal dan masukkan perintah berikut dan cukup tekan enter untuk setiap input. Setelah berhasil diselesaikan, itu akan membuat file.ssh direktori di dalam direktori home.
tom@CentOS ~]$ pwd
/home/tom
[tom@CentOS ~]$ ssh-keygen
Perintah di atas akan menghasilkan hasil sebagai berikut.
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tom/.ssh/id_rsa): Press Enter Only
Created directory '/home/tom/.ssh'.
Enter passphrase (empty for no passphrase): ---------------> Press Enter Only
Enter same passphrase again: ------------------------------> Press Enter Only
Your identification has been saved in /home/tom/.ssh/id_rsa.
Your public key has been saved in /home/tom/.ssh/id_rsa.pub.
The key fingerprint is:
df:93:8c:a1:b8:b7:67:69:3a:1f:65:e8:0e:e9:25:a1 tom@CentOS
The key's randomart image is:
+--[ RSA 2048]----+
| |
| |
| |
|
.
|
| Soo |
| o*B. |
| E = *.= |
| oo==. . |
| ..+Oo
|
+-----------------+
ssh-keygen telah menghasilkan dua kunci, yang pertama adalah pribadi (mis., id_rsa) dan yang kedua adalah publik (mis., id_rsa.pub).
Note: Jangan pernah membagikan KUNCI PRIBADI Anda dengan orang lain.
Menambahkan Kunci ke authorized_keys
Misalkan ada dua developer yang mengerjakan sebuah proyek, yaitu Tom and Jerry. Kedua pengguna telah membuat kunci publik. Mari kita lihat bagaimana menggunakan kunci ini untuk otentikasi.
Tom menambahkan kunci publiknya ke server dengan menggunakan ssh-copy-id perintah seperti yang diberikan di bawah ini -
[tom@CentOS ~]$ pwd
/home/tom
[tom@CentOS ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
Perintah di atas akan menghasilkan hasil sebagai berikut.
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Demikian pula, Jerry menambahkan kunci publiknya ke server dengan menggunakan perintah ssh-copy-id.
[jerry@CentOS ~]$ pwd
/home/jerry
[jerry@CentOS ~]$ ssh-copy-id -i ~/.ssh/id_rsa [email protected]
Perintah di atas akan menghasilkan hasil sebagai berikut.
[email protected]'s password:
Now try logging into the machine, with "ssh '[email protected]'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
Dorong Perubahan ke Repositori
Kami telah membuat repositori kosong di server dan mengizinkan akses untuk dua pengguna. Mulai sekarang, Tom and Jerry dapat memasukkan perubahan mereka ke repositori dengan menambahkannya sebagai remote.
Perintah Git init membuat .git direktori untuk menyimpan metadata tentang repositori setiap kali ia membaca konfigurasi dari .git/config mengajukan.
Tom membuat direktori baru, menambahkan file README, dan melakukan perubahannya sebagai komit awal. Setelah komit, dia memverifikasi pesan komit dengan menjalankangit log perintah.
[tom@CentOS ~]$ pwd
/home/tom
[tom@CentOS ~]$ mkdir tom_repo
[tom@CentOS ~]$ cd tom_repo/
[tom@CentOS tom_repo]$ git init
Initialized empty Git repository in /home/tom/tom_repo/.git/
[tom@CentOS tom_repo]$ echo 'TODO: Add contents for README' > README
[tom@CentOS tom_repo]$ git status -s
?? README
[tom@CentOS tom_repo]$ git add .
[tom@CentOS tom_repo]$ git status -s
A README
[tom@CentOS tom_repo]$ git commit -m 'Initial commit'
Perintah di atas akan menghasilkan hasil sebagai berikut.
[master (root-commit) 19ae206] Initial commit
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 README
Tom memeriksa pesan log dengan menjalankan perintah git log.
[tom@CentOS tom_repo]$ git log
Perintah di atas akan menghasilkan hasil sebagai berikut.
commit 19ae20683fc460db7d127cf201a1429523b0e319
Author: Tom Cat <[email protected]>
Date: Wed Sep 11 07:32:56 2013 +0530
Initial commit
Tom melakukan perubahannya ke repositori lokal. Sekarang, saatnya untuk mendorong perubahan ke repositori jarak jauh. Tetapi sebelum itu, kita harus menambahkan repositori sebagai remote, ini adalah operasi satu kali. Setelah ini, dia dapat dengan aman mendorong perubahan ke repositori jarak jauh.
Note- Secara default, Git hanya mendorong ke cabang yang cocok: Untuk setiap cabang yang ada di sisi lokal, sisi jarak jauh diperbarui jika cabang dengan nama yang sama sudah ada di sana. Dalam tutorial kami, setiap kali kami mendorong perubahan keorigin master cabang, gunakan nama cabang yang sesuai dengan kebutuhan Anda.
[tom@CentOS tom_repo]$ git remote add origin [email protected]:project.git
[tom@CentOS tom_repo]$ git push origin master
Perintah di atas akan menghasilkan hasil sebagai berikut.
Counting objects: 3, done.
Writing objects: 100% (3/3), 242 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:project.git
* [new branch]
master −> master
Sekarang, perubahan berhasil dilakukan ke repositori jarak jauh.