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 rebaseGIT 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). rebaseSub - 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 topicdulu tetapi muncul berakar di bagian atas cabang integrasi. Cabang baru ini masih dipanggil topicoleh GIT, sehingga referensi lama dibuang. Secara tidak resmi saya memberi label topic-0kondisi asli cabang Anda topic-1dan seterusnya, serta berbagai refactoringnya.
Ini saran saya untuk topiccabang Anda :
(Langkah Opsional) Anda secara interaktif rebase cabang topik Anda topicpada titik percabangan (lihat --fixuppilihan untuk commitdan -idan --autosquashpilihan 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-2ke teman satu tim yang mengulasnya di ujung master.
Jika topic-2tidak 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-2memiliki 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-1dan topic-2yang 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» mastercabang 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.