Anda harus dapat memaksa revisi lokal Anda ke repo jarak jauh dengan menggunakan
git push -f <remote> <branch>
(misalnya git push -f origin master). Berangkat <remote>dan <branch>akan memaksa mendorong semua cabang lokal yang telah ditetapkan --set-upstream.
Hanya diperingatkan, jika orang lain membagikan repositori ini, riwayat revisi mereka akan bertentangan dengan yang baru. Dan jika mereka memiliki komitmen lokal setelah titik perubahan mereka akan menjadi tidak valid.
Memperbarui : Saya pikir saya akan menambahkan catatan tambahan. Jika Anda membuat perubahan yang akan ditinjau oleh orang lain, maka tidak jarang membuat cabang dengan perubahan itu dan melakukan rebase secara berkala agar tetap terbarui dengan cabang pengembangan utama. Biarkan pengembang lain tahu ini akan terjadi secara berkala sehingga mereka akan tahu apa yang diharapkan.
Pembaruan 2 : Karena semakin banyaknya pemirsa, saya ingin menambahkan beberapa informasi tambahan tentang apa yang harus dilakukan ketika Anda upstreambenar - benar mengalami tekanan.
Katakanlah saya sudah mengkloning repo Anda dan telah menambahkan beberapa commit seperti:
D ---- E topik
/
A ---- B ---- C development
Tetapi kemudian developmentcabang dipukul dengan a rebase, yang akan menyebabkan saya menerima kesalahan seperti ketika saya menjalankan git pull:
Membongkar objek: 100% (3/3), selesai.
Dari <repo-lokasi>
* pengembangan cabang -> FETCH_HEAD
Penggabungan otomatis <file>
CONFLICT (konten): Gabungkan konflik di <lokasi>
Penggabungan otomatis gagal; perbaiki konflik dan kemudian hasilkan.
Di sini saya dapat memperbaiki konflik dan commit, tetapi itu akan meninggalkan saya dengan sejarah komit yang benar-benar jelek:
C ---- D ---- E ---- F topik
/ /
A ---- B -------------- Pengembangan C '
Mungkin terlihat menarik untuk digunakan git pull --forcetetapi berhati-hatilah karena itu akan membuat Anda terlantar:
D ---- E topik
A ---- B ---- C 'development
Jadi mungkin pilihan terbaik adalah melakukan git pull --rebase. Ini akan mengharuskan saya untuk menyelesaikan konflik seperti sebelumnya, tetapi untuk setiap langkah alih-alih melakukan saya akan menggunakan git rebase --continue. Pada akhirnya histori komit akan terlihat jauh lebih baik:
Topik D '--- E'
/
A ---- B ---- C 'development
Pembaruan 3: Anda juga dapat menggunakan --force-with-leaseopsi sebagai dorongan gaya "aman", seperti yang disebutkan oleh Cupcake dalam jawabannya :
Mendorong paksa dengan "sewa" memungkinkan dorongan gaya gagal jika ada komit baru pada kendali jarak jauh yang tidak Anda harapkan (secara teknis, jika Anda belum mengambilnya ke cabang pelacak jarak jauh Anda), yang berguna jika Anda tidak ingin secara tidak sengaja menimpa komitmen orang lain yang bahkan belum Anda ketahui, dan Anda hanya ingin menimpa komitmen Anda sendiri:
git push <remote> <branch> --force-with-lease
Anda dapat mempelajari lebih detail tentang cara menggunakan --force-with-leasedengan membaca salah satu dari yang berikut:
git push origin --forceberhasil untukmu?