Dalam upaya mencapai git nirwana, saya menghabiskan hari mempelajari cara memanfaatkan rebase untuk situasi di mana saya saat ini bergabung.
Saat menjalankan apa yang saya anggap sebagai aliran git 101 (yang saya jelaskan di bawah), saya harus melakukannya push --force
saat mendorong perubahan saya kembali ke asalnya.
Saya bukan satu-satunya - Saya tahu bahwa ini adalah tanah tertutup (lihat 1 , 2 , 3 , 4 , 5 ), dan saya memahami alasan teknis mengapa gaya diperlukan. Masalah saya adalah ini --- ada banyak (banyak) entri blog yang memuji rebase dan bagaimana hal itu mengubah hidup mereka (lihat 1 , 2 , 3 , 4 untuk beberapa daftar), tetapi tidak satupun dari mereka menyebutkan bahwa itu push --force
adalah bagian dari aliran mereka. Namun, hampir setiap jawaban untuk pertanyaan stackoverflow yang ada mengatakan hal-hal seperti "ya, jika Anda akan mengubah basis, ya harus menggunakan push --force
".
Mengingat jumlah dan religiusitas pendukung rebase, saya harus percaya bahwa menggunakan 'push --force' bukanlah bagian inheren dari aliran rebase, dan jika seseorang sering harus memaksakan dorongan mereka, mereka melakukan sesuatu yang salah .
push --force
adalah hal yang buruk .
Jadi inilah aliran saya. Dengan cara apa saya bisa mencapai hasil yang sama tanpa kekuatan?
Contoh Sederhana
Dua cabang:
- v1.0 - cabang rilis, hanya berisi patch
- master - semuanya untuk rilis mayor berikutnya.
Saya punya beberapa patch komit dan beberapa komit untuk rilis berikutnya.
Saya ingin memasukkan tambalan ke master saya sehingga tidak hilang untuk rilis berikutnya. Pra-pencerahan, saya cukup:
git checkout master
git merge v1.0
Tapi sekarang saya sedang mencoba
git checkout master
git rebase v1.0
Jadi sekarang saya di sini:
Waktu untuk:
git push
Tidak ada dadu.