Saya telah melakukan git commit
diikuti oleh a git push
. Bagaimana saya bisa mengembalikan perubahan itu di repositori lokal dan jarak jauh?
$ git log
commit 364705c23011b0fc6a7ca2d80c86cef4a7c4db7ac8
Author: Michael Silver <Michael [email protected]>
Date: Tue Jun 11 12:24:23 2011 -0700
git
git-push
git-commit
michael
sumber
sumber
git reset --hard <the-sha-you-want-to-return-to>
.git log --decorate --oneline
untuk mencari tahu ke mana KEPALA Anda menunjuk.git reset HEAD~1
jika Anda tidak ingin perubahan Anda hilang (perubahan tidak bertahap). Ubah, komit, dan tekan lagigit push -f [origin] [branch]
Secara umum, buat komit "terbalik", menggunakan:
kemudian kirimkan ke remote seperti biasa:
Ini tidak akan menghapus komit: itu membuat komit tambahan yang membatalkan apa pun komit pertama lakukan. Ada lagi, tidak benar-benar aman, terutama ketika perubahan sudah disebarkan.
sumber
git reset
hanya diterima jika Anda masih belum mendorong perubahan ke server.Pertama-tama, Santai.
"Tidak ada yang di bawah kendali kami. Kontrol kami hanyalah ilusi.", "Untuk berbuat salah adalah manusia"
Saya mendapatkan bahwa Anda secara tidak sengaja mendorong kode Anda
remote-master
. INI akan baik-baik saja.1. Pada awalnya, dapatkan
SHA-1
nilai dari komit yang ingin Anda kembalikan, mis. Komit ke cabang utama. jalankan ini:Anda akan melihat banyak 'f650a9e398ad9ca606b25513bd4af9fe ...' seperti string bersama dengan masing-masing komit. salin nomor itu dari komit yang ingin Anda kembalikan .
2. Sekarang, ketikkan perintah di bawah ini:
Anda akan melihat pesan seperti "KEPALA sekarang di". Anda jelas. Apa yang baru saja dilakukan adalah untuk mencerminkan perubahan itu secara lokal.
3. Sekarang, ketikkan perintah di bawah ini:
Anda akan melihat seperti
Sekarang, Anda semua jelas. Periksa master dengan "git log" lagi, fixed_destination_commit Anda harus di atas daftar.
Anda dipersilakan (sebelumnya;))
MEMPERBARUI:
Sekarang, perubahan yang telah Anda buat sebelum semua ini dimulai, sekarang hilang. Jika Anda ingin mengembalikan kerja keras itu lagi, itu mungkin. Berkat git reflog , dan git perintah ceri-pilih .
Untuk itu, saya sarankan untuk mengikuti blog ini atau posting ini .
sumber
git reset HEAD~1
jika Anda tidak ingin perubahan Anda hilang (perubahan tidak bertahap). Ubah, komit, dan dorong lagigit push -f [origin] [branch]
sumber
Anda dapat melakukan rebase interaktif:
Ini akan memunculkan editor default Anda. Hapus saja baris berisi komit yang ingin Anda hapus untuk menghapus komit itu.
Anda tentu saja akan memerlukan akses ke repositori jarak jauh untuk menerapkan perubahan ini di sana juga.
Lihat pertanyaan ini: Git: menghapus commit yang dipilih dari repositori
sumber
Coba gunakan
Harap Dicatat: Di sini id komit akan id komit yang ingin Anda tuju tetapi bukan id yang ingin Anda atur ulang. ini adalah satu-satunya titik di mana saya juga terjebak.
lalu dorong
sumber
Kalau tidak:
Paksa cabang master dari repositori jauh asal ke induk dari komit terakhir
sumber