Sebenarnya ada kepemilikan ketiga — dan kemungkinan besar banyak yang lain, karena GIT lebih merupakan implementasi kerangka SCM daripada implementasi metodologi SCM. Kemungkinan ketiga ini didasarkan pada rebase
.
The rebase
GIT subcommand mengambil serangkaian komit (biasanya dari titik Anda bercabang ke ujung cabang topik Anda topic
) dan replay mereka di tempat lain (biasanya di ujung cabang integrasi Anda, misalnya master
). rebase
Sub - perintah tersebut menghasilkan komitmen baru, yang memberikan peluang untuk menyusun ulang komitmen dalam bentuk yang lebih mudah ditinjau. Ini menghasilkan serangkaian komit baru, mirip dengan apa yang topic
dulu tetapi muncul berakar di bagian atas cabang integrasi. Cabang baru ini masih dipanggil topic
oleh GIT, sehingga referensi lama dibuang. Secara tidak resmi saya memberi label topic-0
kondisi asli cabang Anda topic-1
dan seterusnya, serta berbagai refactoringnya.
Ini saran saya untuk topic
cabang Anda :
(Langkah Opsional) Anda secara interaktif rebase cabang topik Anda topic
pada titik percabangan (lihat --fixup
pilihan untuk commit
dan -i
dan --autosquash
pilihan pada rebase
), yang memberikan Anda kesempatan untuk menulis ulang komit Anda dengan cara yang lebih mudah untuk ulasan. Ini menghasilkan cabang topic-1
.
Anda rebase cabang topik Anda di bagian atas cabang integrasi Anda, mirip dengan melakukan penggabungan, tetapi sejarah “tidak mencemari” dengan penggabungan yang hanya merupakan artefak rekayasa perangkat lunak. Ini menghasilkan cabang topic-2
.
Kirim topic-2
ke teman satu tim yang mengulasnya di ujung master
.
Jika topic-2
tidak apa-apa maka gabungkan menjadi master.
CATATAN Cabang-cabang — di mana cabang mengacu pada pohon komit — semua akan disebut sama oleh GIT, dengan demikian, pada akhir proses, hanya cabang yang topic-2
memiliki nama dalam GIT.
Pro:
- Tidak ada kode usang dalam ulasan.
- Tidak ada ulasan "penggabungan asing" palsu (fenomena yang Anda gambarkan pada tanggal 1).
- Peluang untuk menulis ulang komit dengan cara yang bersih.
Cons:
- Alih-alih satu cabang
topic-0
, ada tiga cabang artefak topic-0
, topic-1
dan topic-2
yang dibuat di pohon komit. (Meskipun setiap saat, hanya satu dari mereka yang memiliki nama di GIT.)
Dalam skenario 1 Anda «jika seseorang menggabungkan sesuatu di antara" 1. " dan "2." »mengacu pada rentang waktu antara penciptaan titik cabang dan waktu ketika Anda memutuskan untuk bergabung. Dalam skenario ini «jika seseorang menggabungkan sesuatu di antara" 1. " dan "2." »mengacu pada rentang waktu antara rebase dan penggabungan, yang biasanya sangat singkat. Jadi dalam skenario yang saya sediakan, Anda dapat «mengunci» master
cabang untuk saat penggabungan tanpa mengganggu alur kerja Anda secara signifikan, sementara itu tidak praktis dalam skenario 1.
Jika Anda melakukan tinjauan kode sistematis, mungkin ide yang baik untuk mengatur ulang komit dengan cara yang memadai (langkah opsional).
Mengelola artefak cabang perantara hanya menghadirkan kesulitan jika Anda membaginya di antara repositori.