Reset remote tertentu melakukan

Aku ingin membuang semua perubahan yang dilakukan setelah melakukan <commit-hash> . Jadi yang saya lakukan:

git reset --hard <commit-hash>

Sekarang saya ingin melakukan hal yang sama dengan saya remote. Bagaimana saya bisa melakukan ini? Saya telah melakukan beberapa melakukan (dan mendorong) setelah <commit-hash> dan aku hanya ingin membuang mereka semua. Ini hanya sesuatu yang pergi sangat salah di jalan dan aku don't ingin membuatnya lebih buruk dari itu sudah. ;(

Pada dasarnya saya ingin mundur saya asal/master menjadi <commit-hash>

Mengomentari pertanyaan (2)
Larutan

Dengan asumsi bahwa cabang ini disebut guru baik di sini maupun jarak jauh, dan bahwa anda remote disebut asal yang bisa anda lakukan:

 git reset --hard 
 git push -f origin master

Namun, anda harus menghindari melakukan hal ini jika orang lain bekerja dengan repositori jauh dan telah ditarik perubahan. Dalam kasus itu, akan lebih baik untuk kembali komit bahwa anda don't ingin, kemudian dorong seperti biasa.

Update: anda've dijelaskan di bawah ini bahwa orang lain telah ditarik perubahan yang anda've mendorong, sehingga's baik untuk membuat yang baru melakukan yang mengembalikan semua perubahan tersebut. Ada's nice penjelasan dari anda pilihan untuk melakukan hal ini di ini jawaban dari Jakub Narębski. Mana yang paling nyaman tergantung pada berapa banyak berkomitmen ingin anda kembalikan, dan metode mana yang paling masuk akal untuk anda.

Sejak dari pertanyaan anda itu's jelas bahwa anda telah menggunakan git reset --harduntuk me-resetmastercabang, anda mungkin perlu untuk memulai dengan menggunakan git reset --hard ORIG_HEAD untuk pindah ke cabang anda kembali ke tempat itu sebelumnya. (Seperti biasa dengan git reset --hard, pastikan bahwa git status bersih, bahwa kamu're pada cabang kanan dan bahwa anda're menyadari git reflog sebagai alat untuk memulihkan rupanya komit hilang.) Anda juga harus memeriksa bahwa ORIG_HEAD poin ke kanan komit, dengan git show ORIG_HEAD.

Pemecahan masalah:

Jika anda mendapatkan pesan seperti "! [remote ditolak] a60f7d85 -> guru (pre-menerima hook menurun)"

maka anda harus mengizinkan cabang menulis ulang sejarah untuk cabang tertentu. Di BitBucket misalnya dikatakan "menulis Ulang cabang sejarah tidak diperbolehkan". Ada kotak centang yang bernama Memungkinkan menulis ulang cabang sejarah yang harus anda periksa.

Komentar (12)

Gunakan jawaban yang lain jika anda don't keberatan kehilangan perubahan lokal. Metode ini masih dapat wreck jauh anda jika anda salah memilih melakukan hash untuk kembali ke.

Jika anda hanya ingin membuat remote pertandingan komit bahwa's sudah di cabang lokal anda:

  1. Melakukan tidak melakukan reset.
  2. Menggunakan git loguntuk menemukan hash komit ingin anda remote yang harus di.git log -puntuk melihat perubahan, ataugit log --graph-semua-oneline --menghias` untuk melihat pohon kompak. (Setelah yang terakhir sebagai alias dalam tempurung ini sangat berguna.)
  3. Menyalin hash.
  4. Menjalankan perintah seperti:

git push --force <-hash>:

misalnya

git push --force asal 606fdfaa33af1844c86f4267a136d4666e576cdc:master

Komentar (11)

Aku memecahkan masalah seperti milik anda dengan perintah ini:

git reset --hard  
git push -f  : 
Komentar (0)

Pada GitLab, anda mungkin harus mengatur cabang ke terlindungi sebelum melakukan hal ini. Anda dapat melakukan ini di [repo] > Pengaturan > Repositori > Dilindungi Cabang. Maka metode dari Mark's jawaban yang bekerja.

git reset --hard 
git push -f origin master
Komentar (0)

Jika anda ingin versi sebelumnya dari file, saya akan merekomendasikan menggunakan git checkout.

git checkout 

Melakukan hal ini akan mengirim anda kembali dalam waktu, hal itu tidak mempengaruhi keadaan saat ini proyek anda, anda dapat datang ke mainline git checkout mainline

tetapi ketika anda menambahkan file dalam argumen, bahwa berkas dibawa kembali ke anda dari waktu sebelumnya untuk proyek anda saat ini, yaitu proyek anda saat ini berubah dan perlu dilakukan.

git checkout  -- file_name
git add .
git commit -m 'file brought from previous time'
git push

Keuntungan dari ini adalah bahwa hal itu tidak menghapus sejarah, dan juga tidak kembali kode tertentu perubahan (git kembali)

Cek lebih lanjut di sini https://www.atlassian.com/git/tutorials/undoing-changes#git-checkout

Komentar (1)

Saya dua sen untuk jawaban sebelumnya: jika

git push --force  :

masih doesn't bekerja, anda mungkin ingin mengedit <anda-remote-repo>.git/config file's menerima bagian:

[receive]
  #denyNonFastforwards = true
  denyNonFastforwards = false
Komentar (0)

Jika anda branch pengembangan atau produksi, cara termudah untuk mencapai hal ini adalah ulang tertentu melakukan secara lokal dan membuat cabang baru dari sana. Anda dapat menggunakan:

git checkout 000000

(di mana 000000 adalah komit id di mana anda ingin pergi) anda bermasalah cabang dan kemudian hanya membuat cabang baru:

git remote add [name_of_your_remote]

Kemudian anda dapat membuat yang baru PR dan semua akan bekerja dengan baik!

Komentar (0)

Lakukan satu hal, dapatkan komit's SHA no. seperti 87c9808 dan kemudian,

  1. bergerak sendiri ,yang adalah kepala ke yang ditentukan melakukan (dengan melakukan git reset --hard 89cef43//menyebutkan nomor anda di sini )
  2. Selanjutnya melakukan beberapa perubahan dalam random file , sehingga git akan meminta anda untuk melakukan yang lokal dan kemudian dari jarak jauh Dengan demikian, apa yang perlu anda lakukan sekarang ini. setelah menerapkan perubahan git commit-a-m "trial melakukan"
  3. Sekarang mendorong berikut komit (jika ini telah dilakukan secara lokal) oleh git push origin master
  4. Sekarang apa git akan minta dari anda adalah bahwa

error: gagal untuk mendorong beberapa refs untuk 'https://github.com/YOURREPOSITORY/AndroidExperiments.git&#39; petunjuk: Update ditolak karena ujung anda saat ini cabang yang di belakang petunjuk: untuk remote rekan. Mengintegrasikan remote perubahan (mis. petunjuk: 'git pull ...') sebelum mendorong lagi.**

  1. Jadi sekarang apa yang dapat anda lakukan adalah

git push --force asal master

  1. Dan dengan demikian, saya berharap ini bekerja :)
Komentar (0)