Bisakah seseorang menjelaskan "cabang pelacakan" yang berlaku untuk git?
Berikut definisi dari git-scm.com :
'Cabang pelacakan' di Git adalah cabang lokal yang terhubung ke cabang jarak jauh. Saat Anda mendorong dan menarik cabang itu, cabang itu secara otomatis mendorong dan menarik ke cabang jarak jauh yang terhubung dengannya.
Gunakan ini jika Anda selalu menarik dari cabang hulu yang sama ke cabang baru, dan jika Anda tidak ingin menggunakan "git pull" secara eksplisit.
Sayangnya, karena baru git dan berasal dari SVN, definisi itu sama sekali tidak masuk akal bagi saya.
Saya membaca " Panduan Pragmatis untuk Git " (buku yang bagus, ngomong-ngomong), dan mereka tampaknya menyarankan bahwa melacak cabang adalah hal yang baik dan setelah membuat remote pertama Anda (asal, dalam kasus ini), Anda harus mengatur cabang master Anda menjadi cabang pelacakan, tetapi sayangnya tidak mencakup mengapa cabang pelacakan adalah hal yang baik atau manfaat apa yang Anda dapatkan dengan mengatur cabang master Anda untuk menjadi cabang pelacakan dari repositori asal Anda .
Bisakah seseorang tolong beri tahu saya (dalam bahasa Inggris)?
sumber
--track
opsi untuk membuat cabang (lokal) yang memiliki salah satu cabang pelacakan jarak jauh ini ditetapkan sebagai hulu . Terminologi ini agak berkembang antara tahun 2006 dan 2019, jadi orang yang berbeda kadang-kadang dapat berarti sesuatu yang berbeda dengan masing-masing kata ini.origin/master
: mereka ada di dalam repositori Anda, tetapi mereka adalah cara Git Anda untuk mengingat nama - nama cabang seperti yang terlihat pada beberapa repositori Git lain padaorigin
. Jika Anda kemudian menggunakan kata hulu , yang merupakan istilah yang lebih modern, untuk mengatakan bahwa Andamaster
telahorigin/master
menetapkannya sebagai hulu , Anda dapat menghindari semua kebingungan terminologi ini.Jawaban:
The book ProGit memiliki penjelasan yang sangat baik :
Cabang Pelacakan
Memeriksa cabang lokal dari cabang jarak jauh secara otomatis membuat apa yang disebut cabang pelacakan. Cabang pelacakan adalah cabang lokal yang memiliki hubungan langsung ke cabang terpencil. Jika Anda berada di cabang dan jenis pelacakan
git push
, Git secara otomatis mengetahui server dan cabang mana yang harus didorong. Selain itu, menjalankangit pull
sementara di salah satu cabang ini mengambil semua referensi jarak jauh dan kemudian secara otomatis bergabung dalam cabang jarak jauh yang sesuai.Ketika Anda mengkloning repositori, umumnya akan secara otomatis membuat cabang master yang melacak asal / master. Itu sebabnya
git push
dangit pull
bekerja di luar kotak tanpa argumen lain. Namun, Anda dapat mengatur cabang pelacakan lain jika diinginkan - cabang yang tidak melacak cabang pada asal dan tidak melacak cabang master. Kasus sederhana adalah contoh yang baru saja Anda lihat, berjalangit checkout -b [branch] [remotename]/[branch]
. Jika Anda memiliki Git versi 1.6.2 atau lebih baru, Anda juga dapat menggunakan--track
singkatan:Untuk mengatur cabang lokal dengan nama yang berbeda dari cabang jarak jauh, Anda dapat dengan mudah menggunakan versi pertama dengan nama cabang lokal yang berbeda:
Sekarang, cabang lokal Anda
sf
akan secara otomatis mendorong ke dan menarik dariorigin/serverfix
.BONUS:
git status
info tambahanDengan cabang pelacakan,
git status
akan memberi tahu Anda seberapa jauh Anda berada di belakang cabang pelacakan - berguna untuk mengingatkan Anda bahwa Anda belum mendorong perubahan Anda! Ini terlihat seperti ini:atau
sumber
Di bawah ini adalah catatan pembelajaran pribadi saya di cabang pelacakan GIT, semoga bermanfaat bagi pengunjung di masa mendatang:
Melacak cabang dan "git fetch":
sumber
Buku Pro Git menyebutkan :
Tidak persis. Pertanyaan SO " Memiliki pemahaman yang sulit
git-fetch
" meliputi:Namun sebenarnya, begitu Anda membangun hubungan cabang hulu antara:
master
origin/master
Kemudian Anda dapat mempertimbangkan
master
sebagai cabang pelacakan lokal : Ini melacak cabang pelacakan jarak jauhorigin/master
yang, pada gilirannya, melacak cabang master dari repo huluorigin
.sumber
git status
saya akan menerima pesan pelacakan komit dengan hormat dari repositori asal dan upstream? (Penyelesaian: Saya mengkloning repo seseorang secara lokal, mendorong klon saya ke repo baru di akun GitHub saya, dan mengatur secara lokal asal dan jarak jauh ke repo github saya dan repo kloning yang dikloning masing-masing).Ini adalah bagaimana saya menambahkan cabang pelacakan sehingga saya bisa menariknya ke cabang baru saya:
sumber