Saya telah menggunakan Git selama sekitar satu tahun sekarang dan menganggapnya fantastis, tetapi saya baru saja memulai versi kedua dari proyek dan memulai cabang baru untuk itu. Saya berjuang sedikit dengan cara terbaik untuk menangani hal-hal ke depan.
Saya memiliki dua cabang yang disebut katakanlah master10 (untuk v1) dan master20 (untuk v2). Saya telah membuat perbaikan bug di v1 pada master10 cabang, dan mengembangkan hal baru dari master20. Setiap kali saya melakukan perbaikan bug saya menggabungkannya ke v2 dengan memeriksa master20 dan melakukan git merge master10
. Sejauh ini baik.
Namun sekarang, saya telah membuat perubahan pada v1 yang tidak saya inginkan di v2, tetapi saya ingin terus menggabungkan perbaikan bug lainnya. Bagaimana cara saya memberi tahu Git untuk melewati commit tertentu (atau serangkaian commit), tetapi ke depan saya masih ingin menggabungkan perbaikan bug lainnya.
Saya pikir git rebase
mungkin yang saya butuhkan tetapi membaca dokumen dan kepala saya hampir meledak.
Saya pikir apa yang saya inginkan adalah sesuatu seperti perintah "git sync" yang memberi tahu git bahwa dua cabang sekarang dalam sinkronisasi dan di masa depan hanya menggabungkan komit dari titik sinkronisasi ini aktif.
Setiap bantuan dihargai.
sumber
IMHO, hal yang paling logis untuk dilakukan, adalah menggabungkan semuanya, dan kemudian menggunakan git revert (commit_you_dont_want) untuk menghapusnya .
Contoh:
Jika Anda memiliki beberapa komitmen "untuk-abaikan", atau ingin mengedit pesan kembalikan:
Maka riwayat Anda mungkin terlihat seperti:
Jika Anda memiliki konflik yang melibatkan HANYA untuk "mengabaikan" ini, Anda dapat menggunakan:
Jadi versi Anda akan bertahan dibandingkan yang lain. Bahkan tanpa pesan kesalahan, Anda mungkin masih "mengembalikan" komitmen yang tidak diinginkan itu, karena mereka mungkin memiliki perubahan lain yang tidak bertentangan, dan Anda masih tidak menginginkannya.
Jika Anda memiliki konflik yang melibatkan TIDAK HANYA komitmen "untuk-abaikan", Anda harus menyelesaikannya secara manual, dan Anda mungkin harus menyelesaikannya lagi selama kembali.
sumber
Komit termasuk keturunan. Anda tidak dapat menggabungkan komit tanpa menggabungkan komit sebelumnya.
Anda bisa memilihnya, tentu saja. Itu aliran yang baik ketika Anda memiliki cabang yang dalam mode pemeliharaan.
sumber
Kedengarannya seperti kasing klasik untuk 'git cherry-pick' https://git-scm.com/docs/git-cherry-pick, ia melakukan persis seperti apa suaranya
sumber
Semacam iklan untuk proyek saya yang pada dasarnya membungkus proses yang dijelaskan oleh @araqnid.
Ini semacam pembantu yang memperkenalkan alur GIT berikut:
Kutipan dari halaman proyek:
sumber
Buat cabang ketiga untuk perubahan yang Anda inginkan di master10 tetapi tidak di master20. Selalu anggap master10 sebagai "tuan" Anda, cabang paling stabil dari semuanya. Cabang yang ingin disinkronkan semua cabang lainnya setiap saat.
sumber
Daripada
revert
ataucherry-pick
untuk kasus ini, Anda perlu meminta git untuk mempertimbangkan perubahan yang Anda lewati menjadi lebih tua dari yang Anda buat.Begitu:
git merge ccc
git merge fff --no-commit
git merge --continue
git merge source-branch-head
Setelah Langkah 4, git akan menganggap cabang Anda lebih baru dari komit itu, karena Anda sudah menanganinya (dengan memilih untuk menyimpan versi-versi ANDA).
sumber