Git pada masa ini seperti tools wajib bagi para pekerja dibidang software. Requirement pekerjaan senantiasa selalu meyertakan Git. Perusahaan-perusahaan besar seperti Google, Facebook, Microsoft, Twitter, Linkedin sudah terlebih dahulu menggunakan Git sebagai Sistem Version Control.
Menggunakan Git untuk membuat software open bisa dilakukan dengan membuat repository open pada github.com dan pekerjaan ini relatif cukup mudah karena server sudah ditangani oleh github.com sehingga developer hanya perlu memikirkan local repository. Menggunakan github versi berbayarpun dapat mencegah code dapat diakses pada project non-open. Tetapi pada project yang sangat private, atau developer dengan modal pas-pasan, alasan tertentu lainnya bisa memilih menginstall Git pada server sendiri.
Berikut adalah beberapa keuntungan yang didapatkan dengan membuat Git server;
1. IRIT!
2. Melindungin privacy project,
3. Project dapat dikelola dengan baik,
4. Software dapat dikerjakan dari mana saja,
5. Bebas menentukan berapa anggota tim,
6. Dapat bekerja kolaborasi.
Disamping keuntungan tersebut, ada kekurangannya yaitu Git pada server sendiri tidak memiliki GUI sehingga setiap anggota tim harus mengetahui dan memahami syntax-nya.
Berikut adalah cara membuat server Git sendiri dan contoh penggunaannya;
Setting server dan bare repository
1. Install
Untuk Ubuntu/Debian:
$ sudo apt-get install git
Untuk CentOS/Fedora:
$ sudo yum install git
2. Global config email dan nama
$ git config --global user.email "you@email.com" $ git config --global user.name "Your Name"
3. Buat folder repository Anda
$ mkdir repository
4. Berpindah pada project
$ cd repository
5. Sebuah remote repository pada server biasanya tidak membutuhkan working tree. Git repository tanpa working tree dinamakan dengan bare repository. Berikut adalah command untuk membuat bare repository;
~/repository$ git init --bare project01.git Initialized empty Git repository in /home/your_name/repository/project01.git/
Project direktori akan terlihat seperti ini
[home] [your_name] [repository] [project01.git] [branches] [hooks] [folder_lain] config description HEAD
Catatan penting; pemanggilan bare repository ini berlaku relatif terhadap user path.
Sebagai contoh;
- Jika Anda membuat bare repository pada /home/your_name/Documents/repository/project01.git maka Anda harus cloning berdasarkan path tersebut.
$ git clone your_name@your_server.com:Documents/repository/project01.git
Hasil direktori yang Anda dapat seperti berikut
[folder_tempat_anda_meng_cloning] [project01]
Local Computer dan cara memanggil Git
Ada beberapa cara untuk bekerja pada local computer;
1. Cloning
Perintah cloning secara default akan memberikan repository origin
Perintah cloning adalah seperti berikut
$ git clone your_name@your_server.com:repository/project01.git Cloning into 'project01'... warning: You appear to have cloned an empty repository.
1.1. Untuk bekerja, maka Anda harus berpindah pada folder project01
$ cd project01 ~/project01$
1.2. Berikut saya menambahkan ilustrasi pada command line dengan ### sebagai command yang tentunya tidak ada pada perintah command line
### buat sebuah file ~/project01$ echo "ini isi file index" > index.html ### add, list directory, commit, push ~/project01$ git add . ~/project01$ git commit -m "file pertama dari perintah cloning" [master (root-commit) 42d2e1f] file pertama dari perintah cloning 1 file changed, 1 insertion(+) create mode 100644 index.html ~/project01$ ls index.html ~/project01$ git push origin master Counting objects: 3, done. Writing objects: 100% (3/3), 230 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To youer_name@your_server.com:repository/project01.git * [new branch] master -> master ~/project01$
1.3. File config Git pada perintah cloning adalah sebagai berikut;
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] fetch = +refs/heads/*:refs/remotes/origin/* url = your_name@your_server.com:repository/project01.git [branch "master"] remote = origin merge = refs/heads/master
2. Init
Sebenarnya untuk point 2.1 dan 2.2 mempunyai perintah yang sama persis. Tetapi untuk ilustrasi, saya akan sertakan sebagai contoh agar Anda dapat melihat syntax-nya.
2.1. Memberikan init dan nama origin
### buat direktory $ mkdir project01_init_origin ### berpindah direktory $ cd project01_init_origin/ ### perintah git init dilanjutkan dengan git remote add origin ~/project01_init_origin$ git init && git remote add origin your_name@your_server.com:repository/project01.git Initialized empty Git repository in /home/your_name/project01_init_origin/.git/ ### menarik file dari your_server.com ~/project01_init_origin$ git pull origin master remote: Counting objects: 3, done. Unpacking objects: 100% (3/3), done. remote: Total 3 (delta 0), reused 0 (delta 0) From your_server.com:repository/project01 * branch master -> FETCH_HEAD ### menampilkan isi file ~/project01_init_origin$ ls index.html ### membuat file baru ~/project01_init_origin$ echo "isi file init_origin" > init_origin.html ~/project01_init_origin$ ls index.html init_origin.html ### add ~/project01_init_origin$ git add . ### commit ~/project01_init_origin$ git commit -m "adding file init_origin" [master 25a40fb] adding file init_origin 1 file changed, 1 insertion(+) create mode 100644 init_origin.html ### push ~/project01_init_origin$ git push origin master Counting objects: 4, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 307 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To your_name@your_server.com:repository/project01.git 42d2e1f..25a40fb master -> master ~/project01_init_origin$
Git config akan terlihat seperti ini
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = your_name@your_server.com:repository/project01.git fetch = +refs/heads/*:refs/remotes/origin/*
2.2. Memberikan init dan nama repolainnya
### buat folder $ mkdir project01_init_repolainnya $ cd project01_init_repolainnya/ ### init dan lanjutkan dengan add repolainnya ~/project01_init_repolainnya$ git init && git remote add repolainnya your_name@your_server.com:repository/project01.git Initialized empty Git repository in /home/your_name/project01_init_repolainnya/.git/ ### pull ~/project01_init_repolainnya$ git pull repolainnya master remote: Counting objects: 6, done. remote: Compressing objects: 100% (3/3), done. remote: Total 6 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (6/6), done. From your_server.com:repository/project01 * branch master -> FETCH_HEAD ### list file ~/project01_init_repolainnya$ ls index.html init_origin.html ### buat file baru ~/project01_init_repolainnya$ echo "isi file repolainnya" > init_repolainnya.html ~/project01_init_repolainnya$ ls index.html init_origin.html init_repolainnya.html ### add, commit ~/project01_init_repolainnya$ git add . ~/project01_init_repolainnya$ git commit -m "penambahan file init_repolainnya.html" [master 77400e8] penambahan file init_repolainnya.html 1 file changed, 1 insertion(+) create mode 100644 init_repolainnya.html ### push ~/project01_init_repolainnya$ git push repolainnya master Counting objects: 4, done. Delta compression using up to 4 threads. Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 351 bytes, done. Total 3 (delta 0), reused 0 (delta 0) To your_project@your_server.com:repository/project01.git 25a40fb..77400e8 master -> master ~/project01_init_repolainnya$
Git config akan terlihat seperti berikut
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "repolainnya"] url = your_name@your_server.com:repository/project01.git fetch = +refs/heads/*:refs/remotes/repolainnya/*
Catatan penting: Untuk membagi git ini dengan orang lain, maka pada repository perlu di set permission 777 atau dengan memberikan user group atau dengan shared repository
$ git init --bare --shared mygit.git
Sumber liannya untuk belajar Git;
- http://git-scm.com/
- http://git-scm.com/book/id
- https://try.github.io/levels/1/challenges/1
- http://www.vogella.com/tutorials/Git/article.html
Tidak ada komentar:
Posting Komentar