Apa itu cabang topik git?

142

Apa itu cabang topik git? Apakah itu berbeda dari cabang biasa dalam beberapa hal? Apakah ada cabang yang bukan cabang topik?

cakrawala
sumber

Jawaban:

117

Cabang topik biasanya adalah cabang ringan yang Anda buat secara lokal dan memiliki nama yang berarti bagi Anda . Mereka adalah tempat Anda mungkin bekerja untuk perbaikan bug atau fitur (mereka juga disebut cabang fitur) yang diharapkan membutuhkan waktu untuk diselesaikan.

Jenis cabang lainnya adalah "cabang jarak jauh" atau "cabang pelacakan jarak jauh". Jenis cabang ini mengikuti perkembangan pekerjaan orang lain dan disimpan di repositori Anda sendiri. Anda secara berkala memperbarui cabang ini (menggunakan git fetch) untuk melacak apa yang terjadi di tempat lain. Saat Anda siap mengikuti perubahan orang lain, Anda akan menggunakan git pulluntuk mengambil dan menggabungkan.

Saya juga melihat jenis cabang lain yang pada dasarnya adalah pohon file yang sepenuhnya terpisah dalam repositori yang sama. Misalnya, repositori Git itu sendiri berisi kepala bernama man dan html yang berisi konten yang sama sekali berbeda dari cabang master . Saya tidak tahu apa jenis cabang ini biasanya disebut.

Greg Hewgill
sumber
6
Saya sedang mencari bagaimana memiliki dua cabang tanpa nenek moyang yang sama dan menemukan ini: madduck.net/blog/…
Nicolas
1
Tulis pohon terpisah, saya yakin mereka kadang-kadang disebut cabang yatim piatu, mirip dengan bagaimana Github merekomendasikan Anda membuat halaman github secara manual
maks
1
Mengapa Anda mengatakan cabang topik harus lokal? Tidak ada alasan untuk berpikir Anda mungkin tidak ingin mendorong cabang topik. Dan, demikian pula, pengembang lain mungkin membuat cabang topik mereka sendiri dan Anda mungkin ingin menariknya. Jawaban ini tampaknya membingungkan dua properti cabang yang sama sekali tidak terkait: apakah cabang itu lokal atau tidak sama sekali tidak terkait dengan apakah itu cabang topik.
Jean-Paul Calderone
@ Jean-PaulCalderone: Saya tidak berpikir saya mengatakan cabang topik harus menjadi lokal. Anda dapat melacak cabang topik dari jarak jauh, tentu saja, jika ada lebih dari satu pengembang yang mengerjakannya.
Greg Hewgill
2
Saya pikir jawabannya menyiratkan itu. Mengapa "... yang Anda buat secara lokal ..." dan "... memiliki nama yang berarti bagi Anda." bagian intrinsik dari apa yang membuat "cabang topik"? Kalimat pertama dari jawaban Anda sangat menyarankan bahwa ini adalah fitur penting dari cabang topik tetapi keduanya sebenarnya ortogonal dengan "topik topik" cabang atau tidak. Paragraf berikut di mana Anda mendeskripsikan "cabang jauh" memperkuat gagasan bahwa bagian "dibuat secara lokal" dari cabang topik adalah penting. Saya menyarankan untuk memfokuskan kembali jawaban ini untuk menghilangkan penekanan pada ciri-ciri cabang yang tidak terkait ini.
Jean-Paul Calderone
83

Ini bukan istilah teknis; itu hanya mengacu pada cabang yang dibuat untuk mengimplementasikan fitur tertentu atau memperbaiki bug. "Topik" pada dasarnya adalah alasan pembuatan cabang.

mipadi
sumber
2
ya. sebagai kebalikan dari cabang pribadi, di mana Anda memiliki cabang: bob, alice, mat, dll.
webmat
... jadi cabang topik dan cabang fitur adalah hal yang sama, benar?
Betlista
@Betlista Lebih atau kurang, ya.
mipadi
28

https://github.com/dchelimsky/rspec/wiki/Topic-Branches menjelaskan ini dengan baik:

Cabang "topik" adalah cabang terpisah yang Anda gunakan saat mengerjakan satu "topik" (perbaikan bug, fitur baru, atau ide eksperimental). Disarankan untuk mengerjakan cabang topik alih-alih langsung di atas "master" karena:

{... kunjungi tautan ...}

Jadi, untuk semua alasan ini, disarankan untuk menggunakan cabang topik untuk mempersiapkan kiriman bahkan untuk kontribusi sederhana seperti perbaikan bug komit tunggal dan sejenisnya.

Contoh ini juga memberi contoh. Yang benar-benar membuat saya berpikir, ini mungkin yang sudah dilakukan sebagian besar toko. Semua proyek tangkas yang pernah saya lakukan. Saya memilih "Ini bukan istilah teknis" karena saya merasa ini tepat sasaran.

Jeff Ancel
sumber
4

Sepertinya jenis cabang yang paling menonjol dan penting yang bukan cabang topik akan menjadi cabang rilis pada repositori utama yang tersedia untuk umum, bukan?

Itu mungkin tepat untuk Anda, tetapi itu tentang Anda dan proyek yang Anda pikirkan; itu tidak ditentukan oleh Git.

Sebagian besar sistem kontrol versi (terutama yang terpusat) menetapkan atau memberlakukan alur kerja tertentu, termasuk untuk apa menggunakan cabang. Git (dan sebagian besar VCS terdistribusi) mempertimbangkan alur kerja itu, cabang apa yang digunakan, kapan harus berkomitmen, repo apa yang digunakan untuk apa, dll. Semua dipilih oleh pengguna dan perjanjian di antara pengguna (kebijakan). Jadi Git tidak memaksakan ini secara teknis.

Inilah salah satu hal yang membuat Git sulit untuk saya pelajari. Oliver Steele menjelaskan hal ini dari pandangan pengguna, menulis tentang Kebijakan Komit .

Paul
sumber