Latest web development tutorials

manajemen cabang Git

Hampir setiap sistem kontrol versi mendukung beberapa bentuk cabang. Ini berarti Anda dapat menggunakan cabang dari jalur utama pembangunan untuk memisahkan dan tidak mempengaruhi jalur utama sambil terus bekerja.

Seseorang Git bercabang model yang disebut "nirwana Karakteristik", tapi justru karena itu dibedakan dari sistem kontrol versi Git untuk keluarga.

Buat instruksi cabang:

git branch (branchname)

Cabang perintah beralih:

git checkout (branchname)

Bila Anda beralih cabang, Git akan menggunakan cabang pengiriman akhir snapshot mengganti isi direktori kerja Anda, beberapa cabang tidak memerlukan beberapa direktori.

Gabung Cabang perintah:

git merge 

Anda dapat bergabung menjadi sebuah kesatuan cabang berkali-kali, Anda juga dapat memilih untuk menghapus secara langsung setelah merger dimasukkan cabang.


manajemen cabang Git

cabang daftar

perintah dasar yang tercantum di cabang:

git branch

Bila tidak ada argumen, cabang git akan terdaftar di cabang lokal Anda.

$ git branch
* master

Dalam hal ini berarti bahwa kita telah disebut "master" cabang, dan cabang adalah cabang saat ini.

Ketika Anda menjalankan git init, default Git akan membuat "master" cabang untuk Anda.

Jika kita ingin secara manual membuat cabang dan beralih. Mengeksekusi cabang git (branchname) dapat.

$ git branch testing
$ git branch
* master
  testing

Sekarang kita dapat melihat bahwa dengan pengujian cabang baru.

Ketika Anda mengirimkan update dengan cara ini dalam lalu menciptakan cabang baru, jika kemudian juga mengirimkan update, dan kemudian beralih ke "menguji" cabang, Git akan mengembalikan direktori kerja Anda terlihat seperti ketika Anda membuat cabang

Selanjutnya, kami akan menunjukkan cara untuk beralih cabang, kita beralih dengan git checkout (cabang) yang ingin kita untuk memodifikasi cabang.

$ ls
README
$ echo 'w3cschool.cc' > test.txt
$ git add .
$ git commit -m 'add test.txt'
[master 048598f] add test.txt
 2 files changed, 1 insertion(+), 3 deletions(-)
 delete mode 100644 hello.php
 create mode 100644 test.txt
$ ls
README		test.txt
$ git checkout testing
Switched to branch 'testing'
$ ls
README		hello.php

Ketika kita beralih ke "pengujian" cabang, kita menambahkan file test.txt baru telah dihapus, file asli menghapus file hello.php telah muncul. Beralih kembali ke "master" cabang, mereka telah muncul kembali.

$ git checkout master
Switched to branch 'master'
$ ls
README		test.txt

Kita juga bisa menggunakan checkout -b (branchname) perintah git untuk membuat cabang baru dan segera beralih ke cabang, untuk beroperasi di cabang itu.

$ git checkout -b newtest
Switched to a new branch 'newtest'
$ git rm test2.txt 
rm 'test2.txt'
$ ls
README		test.txt
$ git commit -am 'removed test2.txt'
[newtest 556f0a0] removed test2.txt
 1 file changed, 1 deletion(-)
 delete mode 100644 test2.txt
$ git checkout master
Switched to branch 'master'
$ ls
README		test.txt	test2.txt

Seperti yang Anda lihat, kami telah membuat cabang, menghapus beberapa file dalam konteks cabang ini, dan kemudian beralih kembali ke cabang utama kami, file-file tersebut kembali.

Gunakan cabang cutting terpisah akan bekerja, sehingga kita dapat melakukan hal-hal dalam konteks yang berbeda, dan beralih.

Hapus cabang

Lepaskan instruksi cabang:

git branch -d (branchname)

Sebagai contoh, kita ingin menghapus "pengujian" cabang:

$ git branch
* master
  testing
$ git branch -d testing
Deleted branch testing (was 85fc7e7).
$ git branch
* master

menggabungkan cabang

Setelah cabang memiliki konten independen, Anda akhirnya akan ingin gabung kembali ke cabang master Anda. Anda dapat menggunakan perintah berikut untuk setiap cabang digabung ke dalam cabang saat ini untuk:

git merge
$ git branch
* master
  newtest
$ ls
README		test.txt	test2.txt
$ git merge newtest
Updating 2e082b7..556f0a0
Fast-forward
 test2.txt | 1 -
 1 file changed, 1 deletion(-)
 delete mode 100644 test2.txt
$ ls
README		test.txt

Contoh di atas kita akan newtest digabung ke dalam cabang utama ke cabang, berkas test2.txt dihapus.

Gabung Konflik

Dikombinasikan dan tidak hanya menambahkan file, operasi dihapus, Git juga akan menggabungkan perubahan.

$ git branch
* master
$ cat test.txt
w3cschool.cc

Pertama, kita membuat direktori yang disebut "change_site" beralih cabang di masa lalu, kita akan puas untuk www.w3cschool.cc.

$ git checkout -b change_site
Switched to a new branch 'change_site'
$ vim test.txt 
$ head -1 test.txt 
www.w3cschool.cc
$ git commit -am 'changed the site'
[change_site d7e7346] changed the site
 1 file changed, 1 insertion(+), 1 deletion(-)
 

konten yang dimodifikasi disampaikan kepada "change_site" cabang. Sekarang, jika Anda beralih kembali ke "master" cabang bahwa kita dapat kembali untuk melihat isi modifikasi kita sebelum kita memodifikasi file test.txt lagi.

$ git checkout master
Switched to branch 'master'
$ head -1 test.txt 
w3cschool.cc
$ vim test.txt 
$ cat test.txt
w3cschool.cc
新增加一行
$ git diff
diff --git a/test.txt b/test.txt
index 704cce7..f84c2a4 100644
--- a/test.txt
+++ b/test.txt
@@ -1 +1,2 @@
 w3cschool.cc
+新增加一行
$ git commit -am '新增加一行'
[master 14b4dca] 新增加一行
 1 file changed, 1 insertion(+)
 

Sekarang perubahan ini telah dicatat dalam "master" cabang. Selanjutnya kita akan "change_site" konsolidasi cabang lebih.

 $ git merge change_site
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
$ cat test.txt 
<<<<<<< HEAD
w3cschool.cc
新增加一行
=======
www.w3cschool.cc
>>>>>>> change_site

Kami akan menggabungkan sebelum cabang untuk "master" cabang, gabungan konflik muncul, maka kita perlu mengubah secara manual.

$ vim test.txt 
$ cat test.txt 
www.w3cschool.cc
新增加一行
$ git diff
diff --cc test.txt
index f84c2a4,bccb7c2..0000000
--- a/test.txt
+++ b/test.txt
@@@ -1,2 -1,1 +1,2 @@@
- w3cschool.cc
+ www.w3cschool.cc
 +新增加一行

Dalam Git, git menambahkan bahwa kami dapat menggunakan untuk memberitahu Git file konflik telah diatasi

$ git status -s
UU test.txt
$ git add test.txt 
$ git status -s
M  test.txt
$ git commit
[master 88afe0e] Merge branch 'change_site'

Sekarang kita telah berhasil diselesaikan menggabungkan konflik, dan menyerahkan hasil.