Berasal dari merkuri, saya menggunakan cabang untuk mengatur fitur. Secara alami, saya ingin melihat alur kerja ini dalam sejarah saya juga.
Saya memulai proyek baru saya menggunakan git dan menyelesaikan fitur pertama saya. Ketika menggabungkan fitur, saya menyadari git menggunakan fast-forward, yaitu itu menerapkan perubahan saya langsung ke cabang master jika memungkinkan dan lupa tentang cabang saya.
Jadi untuk memikirkan masa depan: Saya satu-satunya yang mengerjakan proyek ini. Jika saya menggunakan pendekatan default git (penggabungan maju cepat), riwayat saya akan menghasilkan satu cabang master raksasa. Tidak ada yang tahu saya menggunakan cabang terpisah untuk setiap fitur, karena pada akhirnya saya hanya akan memiliki cabang master raksasa. Bukankah itu terlihat tidak profesional?
Dengan alasan ini, saya tidak ingin penggabungan maju cepat dan tidak bisa melihat mengapa itu default. Apa bagusnya itu?
sumber
no-ff
' dengan "checkpoint commit" yang memecah dua bagian atau disalahkan.-no-ff
jarang merupakan ide yang baik, tetapi masih dapat membantu menjaga riwayat fitur-internal saat merekam hanya satu komit di cabang utama. Itu masuk akal untuk sejarah fitur yang panjang, ketika Anda menggabungkan dari waktu ke waktu perkembangannya di cabang utama.Jawaban:
Penggabungan fast-forward masuk akal untuk cabang-cabang yang berumur pendek, tetapi dalam sejarah yang lebih kompleks , penggabungan non-fast-forward dapat membuat sejarah lebih mudah untuk dipahami, dan membuatnya lebih mudah untuk mengembalikan sekelompok komitmen.
Peringatan : Non-fast-forwarding juga memiliki efek samping. Harap tinjau https://sandofsky.com/blog/git-workflow.html , hindari 'no-ff' dengan "checkpoint commit" yang melanggar dua bagian atau disalahkan, dan dengan hati-hati mempertimbangkan apakah itu harus menjadi pendekatan default Anda
master
.(Dari nvie.com , Vincent Driessen , pos " Model percabangan Git yang sukses ")
Jakub Narębski juga menyebutkan para config
merge.ff
:Maju-cepat adalah default karena:
Tetapi jika Anda mengantisipasi alur kerja yang berulang pada satu cabang topik / fitur (yaitu, saya bergabung, maka saya kembali ke cabang fitur ini dan menambahkan beberapa komit), maka akan berguna untuk hanya memasukkan penggabungan di cabang utama, daripada semua komit menengah dari cabang fitur.
Dalam hal ini, Anda bisa mengatur file konfigurasi seperti ini :
OP menambahkan dalam komentar:
Jefromi menjawab:
Secara umum, saya menambahkan:
Sebenarnya, ketika Anda mempertimbangkan model cabang Mercurial, pada intinya satu cabang per repositori (meskipun Anda dapat membuat kepala anonim, bookmark, dan bahkan cabang bernama )
Lihat "Git dan Mercurial - Bandingkan dan Kontras" .
sumber
feature
cabang ke repo publik, Anda dapat rebase ulangmaster
sebanyak yang Anda inginkan. Lihat stackoverflow.com/questions/5250817/…feature
cabang Anda kembali kemaster
yang membuat sejarah kata itu linear atau tidak. Penggabungan cepat foward sederhana akan membuatnya linier. Yang masuk akal jika Anda telah membersihkan sejarahfeature
cabang itu sebelum penggabungan maju-cepat, hanya menyisakan komit yang signifikan, sebagaimana disebutkan dalam stackoverflow.com/questions/7425541/… .Mari saya memperluas sedikit pada VonC 's jawaban yang sangat komprehensif :
Pertama, jika saya mengingatnya dengan benar, fakta bahwa Git secara default tidak membuat komit gabungan dalam kasus fast-forward berasal dari mempertimbangkan cabang tunggal "repositori yang sama", di mana tarikan bersama digunakan untuk menyinkronkan kedua repositori tersebut (a alur kerja Anda dapat menemukan contoh pertama di sebagian besar dokumentasi pengguna, termasuk "Manual Pengguna Git" dan "Kontrol Versi dengan Contoh"). Dalam hal ini Anda tidak menggunakan tarikan untuk menggabungkan cabang yang sepenuhnya terealisasi, Anda menggunakannya untuk mengimbangi pekerjaan lain. Anda tidak ingin memiliki fakta sementara dan tidak penting ketika Anda melakukan sinkronisasi disimpan dan disimpan dalam repositori, disimpan untuk masa depan.
Perhatikan bahwa kegunaan cabang fitur dan memiliki beberapa cabang dalam repositori tunggal baru muncul kemudian, dengan penggunaan VCS yang lebih luas dengan dukungan penggabungan yang baik, dan dengan mencoba berbagai alur kerja berbasis gabungan. Itulah sebabnya misalnya Mercurial awalnya hanya mendukung satu cabang per repositori (ditambah kiat anonim untuk melacak cabang jarak jauh), seperti terlihat dalam revisi lama "Mercurial: The Definitive Guide".
Kedua, ketika mengikuti praktik terbaik menggunakan cabang fitur , yaitu bahwa cabang fitur harus semuanya mulai dari versi stabil (biasanya dari rilis terakhir), untuk dapat memilih dan memilih fitur yang akan disertakan dengan memilih cabang fitur mana yang akan digabung, Anda biasanya tidak dalam situasi maju cepat ... yang membuat masalah ini diperdebatkan. Anda perlu khawatir tentang membuat gabungan sebenarnya dan tidak maju cepat ketika menggabungkan cabang pertama (dengan asumsi bahwa Anda tidak menempatkan perubahan komit tunggal langsung pada 'master'); semua penggabungan nanti lainnya tentu saja dalam situasi non-maju cepat.
HTH
sumber