Saya baru di Git, jadi silakan memperlakukan saya seperti seorang pemula.
Alur kerja kami seperti itu. Kami memiliki cabang devyang bisa saya hubungi origin/dev. Ketika kami melakukan perubahan, kami membuat cabang dari dev:
git checkout -b FixForBug asal / dev
Sekarang saya memiliki cabang bernama FixForBugyang melacak (saya pikir itu kata yang tepat) origin/dev. Jadi, jika saya melakukan git pullitu akan membawa perubahan baru origin/devyang bagus. Sekarang, ketika saya selesai dengan perbaikan saya, saya mendorong ke cabang jauh yang disebut hal yang sama.
Pertama saya tarik ke bawah setiap perubahan dari origin/devdan melakukan rebase:
git pull --rebase
Lalu saya mendorong perubahan ke cabang jauh dengan nama yang sama:
git dorong asal FixForBug
Sekarang, ada cabang di server jarak jauh dan saya dapat membuat permintaan tarik agar perubahan disetujui dan bergabung kembali ke cabang dev. Saya tidak pernah mendorong apa pun pada origin/devdiri saya sendiri. Saya menduga ini adalah alur kerja yang cukup umum.
Pertama kali saya melakukan git push, itu berfungsi dengan baik dan membuat cabang jarak jauh. Namun, jika saya mendorong kedua kalinya (katakanlah saat peninjauan kode, seseorang menunjukkan masalah), saya mendapatkan kesalahan berikut:
kesalahan: gagal mendorong beberapa referensi ke ' https://github.limeade.info/Limeade/product.git ' petunjuk: Pembaruan ditolak karena ujung cabang Anda saat ini berada di belakang petunjuk: mitra jarak jauh. Integrasikan perubahan jarak jauh (mis. Petunjuk: 'git pull ...') sebelum mendorong lagi. petunjuk: Lihat 'Catatan tentang maju cepat' di 'git push --help' untuk detailnya.
Namun, jika saya melakukan git statusitu mengatakan saya di depan origin/devoleh 1 komit (yang masuk akal) dan jika saya mengikuti petunjuk dan lari git pull, katanya semuanya up to date. Saya pikir ini karena saya mendorong ke cabang yang berbeda dari cabang hulu saya. Saya dapat memperbaiki masalah ini dengan menjalankan:
git push -f origin FixForBug
Dalam hal ini, itu akan mendorong perubahan ke cabang jarak jauh, mengatakan (pembaruan paksa) dan semuanya tampak baik di cabang jarak jauh.
Pertanyaan saya:
Mengapa -fdiperlukan dalam skenario ini? Biasanya ketika Anda memaksa sesuatu, itu karena Anda melakukan sesuatu yang salah atau setidaknya bertentangan dengan praktik standar. Apakah saya boleh melakukan ini, atau akankah itu mengacaukan sesuatu di cabang terpencil atau membuat kerumitan bagi siapa pun yang akhirnya harus menggabungkan barang-barang saya menjadi dev?
git pull origin FixForBugsebelum saya mendorong itu? Ok itu masuk akal. Jangan ragu untuk menambahkan sebagai jawaban!
