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 upstream
benar - benar mengalami tekanan.
Katakanlah saya sudah mengkloning repo Anda dan telah menambahkan beberapa commit seperti:
D ---- E topik
/
A ---- B ---- C development
Tetapi kemudian development
cabang 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 --force
tetapi 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-lease
opsi 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-lease
dengan membaca salah satu dari yang berikut:
git push origin --force
berhasil untukmu?