Git - Mengelola Cabang
Operasi cabang memungkinkan pembuatan jalur pengembangan lain. Kita dapat menggunakan operasi ini untuk membagi proses pengembangan menjadi dua arah yang berbeda. Misalnya, kami merilis produk untuk versi 6.0 dan kami mungkin ingin membuat cabang sehingga pengembangan fitur 7.0 dapat dipisahkan dari perbaikan bug 6.0.
Buat Cabang
Tom membuat cabang baru menggunakan perintah git branch <branch name>. Kita dapat membuat cabang baru dari yang sudah ada. Kita dapat menggunakan komit atau tag tertentu sebagai titik awal. Jika ada ID komit khusus tidak disediakan, maka cabang akan dibuat dengan HEAD sebagai titik awalnya.
[jerry@CentOS src]$ git branch new_branch
[jerry@CentOS src]$ git branch
* master
new_branch
Cabang baru dibuat; Tom menggunakan perintah git branch untuk mendaftar cabang yang tersedia. Git menunjukkan tanda asterisk sebelum cabang yang sedang diperiksa.
Representasi bergambar operasi create branch ditunjukkan di bawah ini -
Beralih antar Cabang
Jerry menggunakan perintah git checkout untuk beralih antar cabang.
[jerry@CentOS src]$ git checkout new_branch
Switched to branch 'new_branch'
[jerry@CentOS src]$ git branch
master
* new_branch
Pintasan untuk Membuat dan Beralih Cabang
Dalam contoh di atas, kami telah menggunakan dua perintah untuk membuat dan beralih cabang, masing-masing. Git menyediakan–bopsi dengan perintah checkout; operasi ini membuat cabang baru dan segera beralih ke cabang baru.
[jerry@CentOS src]$ git checkout -b test_branch
Switched to a new branch 'test_branch'
[jerry@CentOS src]$ git branch
master
new_branch
* test_branch
Hapus Cabang
Sebuah cabang dapat dihapus dengan memberikan opsi –D dengan perintah git branch. Tetapi sebelum menghapus cabang yang ada, beralihlah ke cabang lain.
Jerry saat ini aktif test_branchdan dia ingin menghapus cabang itu. Jadi dia mengganti cabang dan menghapus cabang seperti yang ditunjukkan di bawah ini.
[jerry@CentOS src]$ git branch
master
new_branch
* test_branch
[jerry@CentOS src]$ git checkout master
Switched to branch 'master'
[jerry@CentOS src]$ git branch -D test_branch
Deleted branch test_branch (was 5776472).
Sekarang, Git hanya akan menampilkan dua cabang.
[jerry@CentOS src]$ git branch
* master
new_branch
Ubah nama Cabang
Jerry memutuskan untuk menambahkan dukungan untuk karakter lebar dalam proyek operasi stringnya. Dia sudah membuat cabang baru, tetapi nama cabang tidak sesuai. Jadi dia mengubah nama cabang dengan menggunakan–m opsi diikuti dengan old branch name dan new branch name.
[jerry@CentOS src]$ git branch
* master
new_branch
[jerry@CentOS src]$ git branch -m new_branch wchar_support
Sekarang, perintah git branch akan menampilkan nama cabang baru.
[jerry@CentOS src]$ git branch
* master
wchar_support
Gabungkan Dua Cabang
Jerry mengimplementasikan fungsi untuk mengembalikan panjang string dari string karakter lebar. Baru kode tersebut akan muncul sebagai berikut -
[jerry@CentOS src]$ git branch
master
* wchar_support
[jerry@CentOS src]$ pwd
/home/jerry/jerry_repo/project/src
[jerry@CentOS src]$ git diff
Perintah di atas menghasilkan hasil sebagai berikut -
t a/src/string_operations.c b/src/string_operations.c
index 8ab7f42..8fb4b00 100644
--- a/src/string_operations.c
+++ b/src/string_operations.c
@@ -1,4 +1,14 @@
#include <stdio.h>
+#include <wchar.h>
+
+size_t w_strlen(const wchar_t *s)
+
{
+
const wchar_t *p = s;
+
+
while (*p)
+ ++p;
+ return (p - s);
+
}
Setelah pengujian, dia berkomitmen dan mendorong perubahannya ke cabang baru.
[jerry@CentOS src]$ git status -s
M string_operations.c
?? string_operations
[jerry@CentOS src]$ git add string_operations.c
[jerry@CentOS src]$ git commit -m 'Added w_strlen function to return string lenght of wchar_t
string'
[wchar_support 64192f9] Added w_strlen function to return string lenght of wchar_t string
1 files changed, 10 insertions(+), 0 deletions(-)
Perhatikan bahwa Jerry mendorong perubahan ini ke cabang baru, itulah sebabnya dia menggunakan nama cabang wchar_support dari pada master cabang.
[jerry@CentOS src]$ git push origin wchar_support <−−− Observer branch_name
Perintah di atas akan menghasilkan hasil sebagai berikut.
Counting objects: 7, done.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 507 bytes, done.
Total 4 (delta 1), reused 0 (delta 0)
To [email protected]:project.git
* [new branch]
wchar_support -> wchar_support
Setelah melakukan perubahan, cabang baru akan muncul sebagai berikut -
Tom ingin tahu tentang apa yang dilakukan Jerry di cabang pribadinya dan dia memeriksa log dari wchar_support cabang.
[tom@CentOS src]$ pwd
/home/tom/top_repo/project/src
[tom@CentOS src]$ git log origin/wchar_support -2
Perintah di atas akan menghasilkan hasil sebagai berikut.
commit 64192f91d7cc2bcdf3bf946dd33ece63b74184a3
Author: Jerry Mouse <[email protected]>
Date: Wed Sep 11 16:10:06 2013 +0530
Added w_strlen function to return string lenght of wchar_t string
commit 577647211ed44fe2ae479427a0668a4f12ed71a1
Author: Tom Cat <[email protected]>
Date: Wed Sep 11 10:21:20 2013 +0530
Removed executable binary
Dengan melihat pesan komit, Tom menyadari bahwa Jerry mengimplementasikan fungsi strlen untuk karakter yang luas dan dia menginginkan fungsionalitas yang sama di cabang master. Alih-alih menerapkan ulang, dia memutuskan untuk mengambil kode Jerry dengan menggabungkan cabangnya dengan cabang master.
[tom@CentOS project]$ git branch
* master
[tom@CentOS project]$ pwd
/home/tom/top_repo/project
[tom@CentOS project]$ git merge origin/wchar_support
Updating 5776472..64192f9
Fast-forward
src/string_operations.c | 10 ++++++++++
1 files changed, 10 insertions(+), 0 deletions(-)
Setelah operasi penggabungan, cabang master akan muncul sebagai berikut -
Sekarang, cabangnya wchar_supporttelah digabungkan dengan cabang master. Kita dapat memverifikasinya dengan melihat pesan komit atau dengan melihat modifikasi yang dilakukan ke dalam file string_operation.c.
[tom@CentOS project]$ cd src/
[tom@CentOS src]$ git log -1
commit 64192f91d7cc2bcdf3bf946dd33ece63b74184a3
Author: Jerry Mouse
Date: Wed Sep 11 16:10:06 2013 +0530 Added w_strlen function to return string lenght of wchar_t string [tom@CentOS src]$ head -12 string_operations.c
Perintah di atas akan menghasilkan hasil sebagai berikut.
#include <stdio.h>
#include <wchar.h>
size_t w_strlen(const wchar_t *s)
{
const wchar_t *p = s;
while (*p)
++p;
return (p - s);
}
Setelah pengujian, dia mendorong perubahan kodenya ke cabang master.
[tom@CentOS src]$ git push origin master
Total 0 (delta 0), reused 0 (delta 0)
To [email protected]:project.git
5776472..64192f9 master −> master
Cabang Rebase
Perintah Git rebase adalah perintah gabungan cabang, tetapi perbedaannya adalah perintah tersebut mengubah urutan komit.
Perintah Git merge mencoba untuk meletakkan komit dari cabang lain di atas HEAD cabang lokal saat ini. Misalnya, cabang lokal Anda memiliki komit A−> B−> C−> D dan cabang gabungan memiliki A−> B−> X−> Y, maka git merge akan mengubah cabang lokal saat ini menjadi sesuatu seperti A−> B−> C−> D−> X−> Y
Perintah Git rebase mencoba mencari tahu nenek moyang yang sama antara cabang lokal saat ini dan cabang gabungan. Kemudian mendorong komit ke cabang lokal dengan memodifikasi urutan komit di cabang lokal saat ini. Misalnya, jika cabang lokal Anda memiliki komitmen A−> B−> C−> D dan cabang gabungan memiliki komitmen A−> B−> X−> Y, maka rebase Git akan mengubah cabang lokal saat ini menjadi sesuatu seperti A− > B−> X−> Y−> C−> D.
Ketika beberapa pengembang bekerja pada satu repositori jarak jauh, Anda tidak dapat mengubah urutan komit dalam repositori jarak jauh. Dalam situasi ini, Anda bisa menggunakan operasi rebase untuk meletakkan komit lokal Anda di atas komit repositori jarak jauh dan Anda bisa mendorong perubahan ini.