Sebuah cabang lokal adalah cabang yang hanya Anda (pengguna lokal) bisa melihat. Itu hanya ada di mesin lokal Anda.
git branch myNewBranch # Create local branch named "myNewBranch"
Sebuah cabang terpencil merupakan cabang pada lokasi yang jauh (dalam banyak kasus origin
). Anda dapat mendorong cabang lokal yang baru dibuat myNewBranch
ke origin
. Sekarang pengguna lain dapat melacaknya.
git push -u origin myNewBranch # Pushes your newly created local branch "myNewBranch"
# to the remote "origin".
# So now a new branch named "myNewBranch" is
# created on the remote machine named "origin"
Sebuah cabang pelacakan jarak jauh adalah salinan lokal dari cabang terpencil. Ketika myNewBranch
didorong untuk origin
menggunakan perintah di atas, cabang pelacakan jarak jauh bernama origin/myNewBranch
dibuat pada mesin Anda. Cabang pelacakan terpencil ini melacak cabang terpencil myNewBranch
di origin
. Anda dapat memperbarui cabang pelacakan jarak jauh agar sinkron dengan cabang jarak jauh menggunakan git fetch
atau git pull
.
git pull origin myNewBranch # Pulls new commits from branch "myNewBranch"
# on remote "origin" into remote tracking
# branch on your machine "origin/myNewBranch".
# Here "origin/myNewBranch" is your copy of
# "myNewBranch" on "origin"
Sebuah cabang pelacakan lokal adalah cabang lokal yang melacak cabang lain. Ini agar Anda dapat menekan / menarik komit ke / dari cabang lain. Cabang pelacakan lokal dalam kebanyakan kasus melacak cabang pelacakan jarak jauh. Ketika Anda mendorong cabang lokal untuk origin
menggunakan git push command
dengan -u
pilihan (seperti yang ditunjukkan di atas), Anda mengatur cabang lokal myNewBranch
untuk melacak cabang pelacakan terpencil origin/myNewBranch
. Ini diperlukan untuk menggunakan git push
dan git pull
tanpa menentukan hulu untuk mendorong atau menarik.
git checkout myNewBranch # Switch to myNewBranch
git pull # Updates remote tracking branch "origin/myNewBranch"
# to be in sync with the remote branch "myNewBranch"
# on "origin".
# Pulls these new commits from "origin/myNewBranch"
# to local branch "myNewBranch which you just switched to.
Inilah jawaban panjangnya.
Remote:
Jika Anda menggunakan Git secara kolaboratif, Anda mungkin perlu menyinkronkan komit Anda dengan mesin atau lokasi lain. Setiap mesin atau lokasi disebut remote , dalam terminologi Git, dan masing-masing mungkin memiliki satu atau lebih cabang. Paling sering, Anda hanya akan memilikinya, bernama
origin
. Untuk daftar semua remote, jalankangit remote
:Anda dapat melihat lokasi mana nama-nama remote ini merupakan jalan pintas, dengan menjalankan
git remote -v
:Setiap remote memiliki direktori di bawah
git/refs/remotes/
:Cabang di mesin Anda:
TLDR: pada mesin lokal Anda, Anda memiliki tiga jenis cabang: cabang non-pelacakan lokal, cabang pelacakan lokal, dan cabang pelacakan jarak jauh. Pada mesin jarak jauh, Anda hanya punya satu jenis cabang.
1. Cabang lokal
Anda dapat melihat daftar semua cabang lokal di mesin Anda dengan menjalankan
git branch
:Setiap cabang lokal memiliki file di bawah
.git/refs/heads/
:Ada dua jenis cabang lokal pada mesin Anda: cabang lokal non-pelacakan, dan pelacakan cabang lokal.
1.1 Cabang lokal yang tidak terlacak
Cabang lokal yang tidak terlacak tidak terkait dengan cabang lainnya. Anda membuatnya dengan menjalankan
git branch <branchname>
.1.2. Melacak cabang lokal
Pelacakan cabang lokal dikaitkan dengan cabang lain, biasanya cabang pelacakan jarak jauh. Anda membuatnya dengan menjalankan
git branch --track <branchname> [<start-point>]
.Anda dapat melihat mana salah satu cabang lokal Anda melacak cabang menggunakan
git branch -vv
:Dari output perintah ini, Anda dapat melihat bahwa cabang lokal
master
melacak cabang pelacakan jarak jauhorigin/master
, dan cabang lokalnew-feature
tidak melacak apa pun.Cara lain untuk melihat cabang mana yang melacak cabang adalah dengan melihat
.git/config
.Melacak cabang lokal berguna. Mereka memungkinkan Anda untuk menjalankan
git pull
dangit push
, tanpa menentukan cabang upstream mana yang akan digunakan. Jika cabang tidak diatur untuk melacak cabang lain, Anda akan mendapatkan kesalahan seperti ini:2. Cabang pelacak jarak jauh (masih di mesin Anda)
Anda dapat melihat daftar semua cabang pelacakan jarak jauh di mesin Anda dengan menjalankan
git branch -r
:Setiap cabang pelacak jarak jauh memiliki file di bawah
.git/refs/<remote>/
:Pikirkan cabang pelacakan jarak jauh Anda sebagai cache lokal Anda untuk apa yang berisi mesin-mesin jarak jauh. Anda dapat memperbarui cabang pelacakan jarak jauh menggunakan
git fetch
, yanggit pull
menggunakan di belakang layar.Meskipun semua data untuk cabang pelacak jarak jauh disimpan secara lokal di mesin Anda (seperti cache), itu masih tidak pernah disebut cabang lokal. (Setidaknya, saya tidak akan menyebutnya begitu!) Itu hanya disebut cabang pelacakan jarak jauh.
Cabang-cabang pada mesin jarak jauh:
Anda dapat melihat semua cabang jarak jauh (yaitu cabang di mesin jarak jauh), dengan menjalankan
git remote show <remote>
:git remote
Perintah ini menanyakan mesin jarak jauh melalui jaringan tentang cabangnya. Itu tidak memperbarui cabang pelacakan jarak jauh pada mesin lokal Anda, gunakangit fetch
ataugit pull
untuk itu.Dari output, Anda dapat melihat semua cabang yang ada di mesin jarak jauh dengan melihat di bawah judul "Cabang jarak jauh" (abaikan garis yang ditandai sebagai "basi").
Jika Anda bisa masuk ke mesin remote dan menemukan repositori di sistem file, Anda bisa melihat semua cabangnya di bawah
refs/heads/
.Contekan:
Untuk menghapus cabang lokal, baik pelacakan atau non-pelacakan, dengan aman:
Untuk menghapus cabang lokal, baik pelacakan atau non-pelacakan, dengan paksa:
Untuk menghapus cabang pelacakan jarak jauh:
Untuk membuat cabang non-pelacakan lokal baru:
Untuk membuat cabang pelacakan lokal baru: (Perhatikan bahwa jika
<start-point>
ditentukan dan merupakan cabang pelacakan jarak jauh sepertiorigin/foobar
, maka--track
flag tersebut secara otomatis disertakan)Contoh:
Untuk menghapus cabang pada mesin jarak jauh:
Untuk menghapus semua cabang pelacakan jarak jauh yang sudah basi, yaitu cabang-cabang yang terkait pada mesin jarak jauh tidak ada lagi:
Anda mungkin telah memperhatikan bahwa dalam beberapa perintah, Anda menggunakan
<remote>/<branch>
, dan perintah lain,<remote> <branch>
,. Contoh:git branch origin/hello-kitty
dangit push --delete origin hello-kitty
.Ini mungkin tampak sewenang-wenang, tetapi ada cara sederhana untuk mengingat kapan harus menggunakan garis miring dan kapan harus menggunakan spasi. Saat Anda menggunakan garis miring, Anda merujuk ke cabang pelacak jarak jauh pada mesin Anda sendiri, sedangkan saat Anda menggunakan spasi, Anda sebenarnya berurusan dengan cabang pada mesin jarak jauh melalui jaringan.
sumber
Cabang lokal:
Cabang di mesin Anda yang dapat Anda gunakan untuk bekerja dan menambahkan komit. Anda dapat mendaftar cabang-cabang ini dengan
git branch
.Cabang Lokal (Dengan Pelacakan):
Cabang lokal biasa yang dikonfigurasi untuk berhubungan dengan cabang jarak jauh. Ini memiliki manfaat seperti kemampuan untuk
git pull
dangit push
tanpa harus menentukan repositori dan nama cabang. Pelacakan juga menyebabkangit status
Anda mengetahui kapan cabang Anda berada di depan atau di belakang kendali jarak jauh.Cabang Terpencil:
Cukup cabang di repositori jarak jauh — biasanya di server seperti GitHub dll.
Cabang Pelacakan Jarak Jauh:
Salinan lokal cabang terpencil. Cabang ini tidak boleh diedit. Tujuannya adalah untuk melacak keadaan cabang terpencil saat ini. Cabang pelacakan jarak jauh dapat dilihat dengan
git branch -r
dan biasanya terlihat sepertiorigin/master
(nama repo diikuti dengan garis miring diikuti dengan nama cabang). Menjalankangit fetch
akan memperbarui cabang pelacakan jarak jauh untuk mencerminkan keadaan cabang jarak jauh yang sesuai.git branch -avv
adalah favorit pribadi saya untuk menampilkan ikhtisar cepat cabang mana yang ada di komputer saya, cabang mana yang ada di remote, dan komit terbaru di masing-masing. Bagian ini-a
menetapkan bahwa semua cabang harus ditampilkan (jarak jauh dan lokal). Yang adav
di ujung berdiri untuk verbose (itu menunjukkan hash dan pesan komit terakhir). Terima kasih kepada @Flimm untuk menunjukkan bahwa yang keduav
menambahkan info tentang cabang lokal mana yang melacak jarak jauh mana.sumber