Git adalah sistem kontrol versi (terdistribusi). Apa itu? Sebuah sistem kontrol versi adalah software yang memungkinkan programmer untuk melacak dan mengelola sejarah proyek, di mana proyek semacam itu bisa menjadi file tunggal, satu set file, atau proyek open source dengan beberapa programmer berkontribusi dari seluruh dunia.

Perbedaan dari “terdistribusi” berarti bahwa tidak ada server pusat di mana kode sumber dan sejarah dari kehidupan proyek. Ketika sebuah proyek Git kloning (“clone” adalah kata Git untuk checkout awal proyek), Anda menerima seluruh sejarah proyek dari kondisi saat ini hingga kembali ke awal waktu pembuatan. Setelah seluruh proyek disimpan secara lokal pada komputer Anda tanpa server pusat membuat koordinasi penggabungan, mencari perbedaan source code, dan log pencarian sejarah sangat cepat.

Beberapa sistem kontrol versi yang lebih umum digunakan dan telah Anda dengar kemungkinan adalah CVS dan Subversion. Tutorial ini akan mengambil pendekatan “melupakan segala yang Anda tahu tentang CVS atau Subversion”. Sebagai seseorang yang telah menggunakan ketiga sistem dalam dunia profesional, saya bisa bersaksi bahwa beberapa pengetahuan tentang CVS atau Subversion dapat berguna ketika mendekati Git, tapi itu tidak perlu. Cara terbaik untuk belajar Git adalah untuk mulai menggunakan Git untuk apa Git.

Mengapa menggunakan Git?

Itu pertanyaan yang sangat cromulent. Jika saya hanya satu orang yang bekerja di website saya sendiri, mengapa saya harus repot-repot dengan kontrol versi? Saya memiliki memori yang cukup bagus dan saya tahu orang lain tidak akan menimpa kode saya.

Mungkin Anda memiliki satu set file untuk website Anda sedang mengembangkan untuk klien, mencari sesuatu seperti ini.

sean@beerhaus:~/Workspace$ls
images/  templates/  index.php.save1  index.php.save3
js/      index.php   index.php.save2  index.php.save4

Di sini, index.php adalah file Anda saat ini dan index.php.save# adalah seperangkat backup dari pekerjaan hari sebelumnya.

Sekarang Anda mengedit index.php. Anda baru saja menambahkan fitur cukup rapi setelah momen inspirasinya terlambat tetapi layak. Secara cerdas, Anda membuat cadangan file ini disebut index.php.save5. Keesokan harinya Anda kembali bekerja pada index.php dan Anda memutuskan fitur baru dari kemarin tidak benar-benar akan bekerja dan Anda menghapusnya dari file tersebut. Beberapa minggu berlalu dan pada saat ini Anda telah disimpan index.php.save27. Keadaan saat proyek ini cukup stabil sehingga Anda tidak lagi membutuhkan 27 file sebelumnya disimpan, sehingga Anda menghapus mereka semua.

Beberapa hari setelah pembersihan Anda Anda merasa bahwa fitur dari index.php.save5 layak mendapat kesempatan kedua, tapi sekarang sudah hilang selamanya. Tentu, Anda mungkin memiliki beberapa salinan cadangan tambahan, dan Anda bahkan mungkin memiliki alat membatalkan penghapusan file. Tapi apakah itu benar-benar cara yang terbaik untuk mengelola kode sumber Anda?

Masalahnya semakin buruk ketika Anda menambahkan lebih banyak orang untuk proyek Anda. Bahkan dengan dua orang yang bekerja pada proyek yang sama, akan ada beberapa file tidak sengaja dihapus dan ditimpa. Mungkin Anda email tarball dari kode sumber bolak-balik dan Anda dapat melihat ke atas dan email lama untuk mendapatkan arsip dengan file yang baru saja dihapus. Good luck.

Ini adalah bagian di mana 99 dari 100 tutorial diperkirakan akan mengulangi klise berharga “enter Git.”

Bagaimana menggunakan Git

Langkah pertama dalam menggunakan Git adalah mendapatkan Git. Jika Anda menggunakan beragam versi dari Linux, ini cukup mudah. (Fakta Terkait:. Git pada awalnya dirancang dan dikembangkan untuk pengembangan terdistribusi pada kernel Linux oleh orang yang sama yang menciptakan kernel, Linus Torvalds) Apapun distribusi Linux yang Anda jalankan, Anda kemungkinan besar akan membutuhkan paket yang akan dipanggil “git” atau “git-core”. Jika Anda menggunakan Windows atau Mac, atau hanya ingin membangun Git dari sumber, lihat http://www.git-scm.com untuk pilihan download dan instalasi.

Membuat Repositori

Once you have Git installed you’ll want to add some information about yourself. This will be helpful in identifying who has committed what code when looking at the Git log for history information.

Setelah Anda memiliki Git terinstall di komputer Anda akan menambahkan beberapa informasi tentang diri Anda. Ini akan membantu dalam mengidentifikasi siapa yang telah melakukan commit pada kode ketika melihat log Git untuk informasi sejarah.

sean@beerhaus:~$git config --global user.name "FirstName LastName"
sean@beerhaus:~$git config --global user.email "your@email"



Sekarang saatnya untuk membuat repositori. Ada dua cara untuk melakukan ini, tapi pada dasarnya satu perintah. Jika Anda memulai sebuah proyek baru dari awal dan Anda ingin Git untuk menjaganya selama masa hidup secara utuh, Anda dapat membuat direktori Anda yang akan berisi semua file proyek dan menginisialisasi direktori untuk digunakan dengan Git:

sean@beerhaus:~/$mkdir new_project
sean@beerhaus:~/$cd new_project/
sean@beerhaus:~/new_project$git init
Initialized empty Git repository in /home/sean/new_project/.git/


Anda sekarang memiliki repositori Git kosong siap untuk digunakan. Jika Anda menjalankan daftar dari semua file yang tersembunyi dalam direktori baru Anda, Anda akan melihat direktori tersembunyi diciptakan .git:

sean@beerhaus:~/new_project$ls -al
total 12
drwxr-xr-x 3 sean sean 4096 2011-11-19 16:09 .
drwxr-xr-x 5 sean sean 4096 2011-11-19 16:09 ..
drwxr-xr-x 7 sean sean 4096 2011-11-19 16:09 .git

Direktori .git adalah tempat Git menyimpan semua informasi dan sejarahnya yang perlu dilacak pada repositori Anda, jadi yang terbaik adalah dibiarkan seperti apa adanya.

git init juga akan bekerja jika Anda memiliki sebuah direktori kode sumber yang ada. Cukup masukkan direktori Anda dan menjalankan git init seperti yang saya lakukan dalam contoh ini.

Menambah/Staging Files

Anda masih harus dalam direktori new_project Anda yang baru saja diinisialisasi untuk Git. Dalam terminologi kontrol versi, ini sekarang disebut direktori kerja, yang berarti itu adalah direktori yang berada di bawah pengawasan dari beberapa sistem kontrol versi.

Mari kita membuat beberapa file untuk Git untuk melacak, dimulai dengan sebuah file konfigurasi. Buat file config.php dengan isi berikut di editor pilihan Anda:


<?php

$database = array(

"driver" => "mysql",

"host" => "locahost",

"username" => "user",

"password" => "pass",

"database" => "new_project");

Setelah menyimpannya dalam file config.php kita bisa menjalankan perintah git lainnya, git status.

sean@beerhaus:~/new_project$git status
# On branch master
#
# Initial commit
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#	config.php
nothing added to commit but untracked files present (use "git add" to track)

branch default di Git dikenal sebagai master. Ini adalah ide yang sama seperti “trunk” dalam sistem kontrol versi lain. Branch hanyalah sebuah garis pembangunan yang dilacak Git.

Untracked files adalah file yang ada di direktori kerja Anda, namun belum dilacak oleh Git karena Anda belum memberitahu Git untuk melacak mereka.

Output dari git status juga menyediakan pesan yang membantu, seperti satu baris pesan dibawah ini:

(use "git add <file>..." to include in what will be committed)

Lanjutkan dan tambahkan file congif.php di daftar file yang dilacak Gits.

sean@beerhaus:~/new_project$git add config.php

Sekarang jika kamu menjalankan git status lagi kamu akan melihat perubahannya.

sean@beerhaus:~/new_project$>git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#	new file:   config.php
#
<code>config.php</code> is now being tracked by Git, as you can see by the change from “untracked file” to “new file”.

Dengan Git, menambahkan file dengan cara ini dikenal sebagai stagging. Area staging adalah langkah setelah file telah ditambahkan tapi belum di commit. Istilah menambahkan tidak harus merujuk ke file baru. Hal ini juga bisa berarti satu set perubahan yang dibuat ke file yang ada yang akan disertakan dalam komit berikutnya. Area stagging memungkinkan kita untuk memilih dan memilih file mana yang akan disertakan dalam commit sebelum commit berlangsung.

Melakukan Commit pada Files

Sekarang Anda dapat melakukan commit file. Melakukan commit file adalah bagaimana Anda memberitahu Git untuk merekam “snapshot” dari kondisi saat ini pada proyek Anda. Adalah penting bahwa dengan setiap komit Anda memberikan pesan komit. Pesannya adalah membantu untuk mengingatkan diri Anda (atau orang lain) kemudian apa tujuan dari setiap perubahan itu. pesan harus tetap pendek tapi informatif.

Cara tercepat untuk memberikan pesan komit adalah dengan menggunakan pilihan -m pada perintah git commit. Jika Anda meninggalkan opsi -m keluar dari perintah, jendela editor akan muncul dan Anda dapat mengetikkan pesan commit Anda di sana.

Untuk mengkonfigurasi editor yang akan digunakan, Anda dapat menjalankangit config --global core.editor vim. Dalam kasus saya saya menggunakan vim, tapi emacs, pico, atau editor lainnya harus dilakukan.

sean@beerhaus:~/new_project$git commit config.php -m "Initial commit. Added a configuration file."
[master (root-commit) c1d55de] Initial commit. Added a configuration file.
 1 files changed, 7 insertions(+), 0 deletions(-)
 create mode 100644 config.php

Sekarang jika kamu menjalankan git status lagi kamu akan mendapatkan pesan yang memberitahu kamu bahwa tidak ada perubahan baru sejak commit terakhir.

sean@beerhaus:~/new_project$git status
# On branch master
nothing to commit (working directory clean)

Melihat Sejarah Proyek

Perintah git log adalah alat yang sangat membantu untuk melihat timeline proyek Anda. Anda dapat melihat setiap komit secara rinci, termasuk tanggal dan yang membuat komit.

sean@beerhaus:~/new_project$git log
commit c1d55debc7be8f50e363df462f84672ad029b703
Author: FirstName LastName <your@email>
Date:   Sat Nov 19 16:45:35 2011 -0400

    Initial commit. Added a configuration file.

Ada beberapa hal yang perlu diperhatikan di sini:

  1. Nama dan alamat email adalah informasi yang Anda berikan dengan git config.
  2. Pesan commit adalah pesan yang Anda berikan pada komit pertama.
  3. Kata “commit” diikuti oleh string hex 40-digit.

String 40-karakter angka heksadesimal dikenal sebagai hash komit, mengacu pada fungsi SHA1 hash kriptografi yang digunakan untuk menghasilkan itu. Semua informasi yang terkait dengan komit disimpan dalam sebuah objek komit. Hash komit adalah output dari fungsi hash diterapkan pada isi obyek, dan kemudian digunakan sebagai referensi unik dengan komit tertentu.

Jika Anda ingin mencari entri log untuk komit tunggal, Anda dapat memberikan hash commit:

sean@beerhaus:~/new_project$git log c1d55debc7be8f50e363df462f84672ad029b703

Untuk melihat file mana yang terlibat dalam komit, Anda dapat menggunakan opsi –stat:

sean@beerhaus:~/new_project$git log --stat c1d55debc7be8f50e363df462f84672ad029b703

Pesan log sekarang berisi:

config.php |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

Melihat Commit Diffs

Sekarang mari kita membuat beberapa perubahan config.php dalam rangka untuk melihat apa yang ditawarkan git diff. Mulailah dengan perubahan sederhana, mengubah nama pengguna database untuk “Foo”. Ketika Anda menyimpan file dan menjalankan git status, kali ini Anda akan melihat config.php sekarang dalam keadaan dimodifikasi:

sean@beerhaus:~/new_project$git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	modified:   config.php
#
no changes added to commit (use "git add" and/or "git commit -a")

Untuk melihat apa yang baru saja diubah, gunakan git diff.

sean@beerhaus:~/new_project$git diff
diff --git a/config.php b/config.php
index ab6e11d..02d30f8 100644
--- a/config.php
+++ b/config.php
@@ -2,6 +2,6 @@
 $database = array(
     "driver"   => "mysql",
     "host"     => "locahost",
-    "username" => "user",
+    "username" => "Foo",
     "password" => "pass",
     "database" => "new_project");

Perubahan Anda cukup mudah dikenali. Tanda minus di depan  memberitahu Anda baris telah dihapus, dan tanda plus di depan memberitahu Anda baris kode telah ditambahkan.

Perintah git diff secara default akan membandingkan kondisi proyek Anda saat ini dengan komit sebelumnya. Anda dapat melewati argumen untuk perintah git diff, seperti hash komit atau pointer khusus HEAD, yang mengacu pada komit terbaru dari proyek Anda saat ini.

Lanjutkan dan commit file yang berubah sehingga Anda dapat membandingkan beberapa hash komit.

sean@beerhaus:~/new_project$git commit -am "Changed database username to Foo."
[master e69a7f9] Changed database username to Foo.
 1 files changed, 1 insertions(+), 1 deletions(-)

Ketika kamu menjalankan git log saat ini, Anda akan melihat perubahan timeline yang dibangun.

sean@beerhaus:~/new_project$git log
commit e69a7f9b3b55c116a5c2edf730cd03df7e093eda
Author: FirstName LastName <your@email>
Date:   Sun Nov 20 14:16:43 2011 -0400

    Changed database username to Foo.

commit c1d55debc7be8f50e363df462f84672ad029b703
Author: FirstName LastName <your@email>
Date:   Sat Nov 19 16:45:35 2011 -0400

    Initial commit. Added a configuration file.

Ketika Anda menjalankan git diff menggunakan dua komit hash, outputnya identik dengan diff yang Anda lihat sebelum komit terakhir.

sean@beerhaus:~/new_project$git diff c1d55debc7be8f50e363df462f84672ad029b703 e69a7f9b3b55c116a5c2edf730cd03df7e093eda>
diff --git a/config.php b/config.php
index ab6e11d..02d30f8 100644
--- a/config.php
+++ b/config.php
@@ -2,6 +2,6 @@
 $database = array(
     "driver"   => "mysql",
     "host"     => "locahost",
-    "username" => "user",
+    "username" => "Foo",
     "password" => "pass",
     "database" => "new_project");

Coba lagi menggunakan opsi --color . Ini akan sedikit mengubahnya agar lebih mudah dilihat.

Kesimpulan

Setelah membiasakan diri dengan Git dan siklus mengedit file, git add, dan git commit, Anda tidak akan pernah melihat kembali ke hari-hari saat menggunakan backup file atau fitur undo editor favorit Anda sebagai pengganti untuk kontrol versi yang tepat. Dalam artikel ini saya menunjukkan Anda perintah penting yang Anda butuhkan ketika harus memulai Git. Topik lainnya termasuk branching, merging, dan remote repositories akan mengikuti.

Diterjemahkan bebas dari http://phpmaster.com/introduction-to-git-1/

Advertisements

About phpgeek programmer

pemimpi yang berharap menjadi the best programmer di zamannya

4 responses »

  1. […] Part 1 dari seri ini saya memperkenalkan dasar-dasar menggunakan Git – membuat repositori, […]

  2. […] mungkin sudah membaca Berkenalan dengan Git – Part 1 dan part 2. Jika tidak, aku benar-benar menyarankan  Anda untuk membacanya. Tidak hanya karena […]

  3. heri says:

    mas saya punya template dan ada file hidden namanya ” .gitignore ” ini buat apa kok nempel di template ?

    • .gitignore berisi daftar file dan direktori yang tidak diinginkan untuk di simpan di repository. Misalkan konfigurasi database untuk develop server di localhost, kan pasti beda konfigurasi database untuk server produksi, jadi file ini tidak perlu di push ke git repository.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s