Jawaban @ Michael adalah hal yang baik jika komitmen Anda adalah komitmen fitur tunggal yang tidak berbagi ketergantungan dengan komitmen untuk fitur lainnya. Namun, jika Anda telah menggabungkan pekerjaan pada dua fitur dalam penerapan apa pun, Anda memerlukan rebase interaktif. Hal ini memungkinkan Anda untuk secara sewenang-wenang mendistribusikan kembali bongkahan perubahan dan melakukan batasan, dan ia melacak bongkahan mana yang belum dikomit ke cabang saat ini.
Jika perubahan fitur hanya kadang-kadang digabungkan menjadi penerapan dan tidak ada ketergantungan lintas fitur, untuk mempermudah pekerjaan, percobaan pertama saya adalah git rebase -i master prototype
, bagi penerapan dengan bongkahan campuran menjadi dua penerapan, satu untuk masing-masing penerapan, lalu akhiri dengan pilihan ceri seperti pada jawaban Michael. Diberikan
A1-B2-C12-D2-E1-F12 prototype
di mana angka menandakan fitur mana yang berisi kode komit, untuk `git rebase -i master prototype yang akan Anda edit komit C12 dan F12,
pick A1
pick B2
edit C12
pick D2
pick E1
edit F12
(menggunakan hash setiap komit alih-alih tag ilustratifnya di sini).
Rebase akan berhenti setelah melakukan C12
, dan Anda dapat git reset HEAD~
lalu git add --patch
untuk menerapkan semua bongkahan fitur-1, git commit
untuk membuat komit C1
di mana C12
berada, lalu git commit -a
untuk menerapkan semua bongkahan yang tersisa dan membuat komit C2
setelahnya. Anda akan berakhir dengan
A1-B1-C1-C2-D2-E1-F1-F2
dan Anda kemudian dapat git checkout -b feature1 master; git cherry-pick A1 B1 C1 E1 F1
dan demikian pula untuk fitur2.
Dalam situasi yang lebih rumit, metode ini masih berfungsi hanya dengan sedikit perubahan. Rebase interaktif jauh lebih baik daripada yang di atas mungkin membuat Anda percaya, namun sejauh ini cara terbaik untuk mengetahuinya adalah dengan mengunjungi halaman manual selagi Anda masuk ke sana dan berebut beberapa orang untuk bersenang-senang. Lakukan itu, dan mungkin akan segera sampai pada titik di mana melakukan ini sebagai ritual prapublikasi sering kali lebih nyaman daripada mencoba membuat alur kerja Anda yang sebenarnya dapat dipublikasikan di setiap langkah kecil.
person
jthill
schedule
30.10.2014