Pertanyaan Buang komit lokal di git


Karena beberapa cherry-picking buruk, repositori git lokal saya saat ini 5 komit di depan asal, dan tidak dalam keadaan baik. Saya ingin menyingkirkan semua komitmen ini dan memulai dari awal lagi.

Jelas, menghapus direktori kerja saya dan kloning ulang akan melakukannya, tetapi mengunduh semuanya dari github lagi sepertinya terlalu berlebihan, dan bukan penggunaan waktu saya yang baik.

Mungkin git revert adalah apa yang saya butuhkan, tetapi saya tidak ingin berakhir 10 melakukan sebelum asal (atau bahkan 6), bahkan jika itu mendapatkan kode itu sendiri kembali ke keadaan yang benar. Saya hanya ingin berpura-pura setengah jam terakhir tidak pernah terjadi.

Apakah ada perintah sederhana yang akan melakukan ini? Sepertinya kasus penggunaan yang jelas, tapi saya tidak menemukan contohnya.


Perhatikan bahwa pertanyaan ini secara khusus tentang melakukan, tidak tentang:

  • file tidak terlacak
  • perubahan tak berubah
  • perubahan bertahap tetapi tidak terikat

930
2018-02-23 21:33


asal


Jawaban:


Jika komitmen berlebihan Anda hanya terlihat oleh Anda, Anda bisa melakukannya git reset --hard origin/<branch_name> untuk kembali ke tempat asalnya.

Melakukan a git revert membuat baru berkomitmen untuk menghapus tua berkomitmen dengan cara yang membuat sejarah semua orang tetap waras.


1618
2018-02-23 21:38



Cukup hapus cabang master lokal Anda dan buat ulang seperti ini:

git branch -D master
git checkout origin/master -b master

194
2018-02-23 21:38



Mencoba:

git reset --hard <the sha1 hash>

untuk mengatur ulang kepala Anda ke mana pun Anda inginkan. Gunakan gitk untuk melihat commit yang Anda inginkan. Anda dapat melakukan reset dalam gitk juga.


141
2018-02-23 21:37



Jika Anda menggunakan Atlassian SourceTree aplikasi, Anda bisa menggunakan opsi atur ulang di menu konteks.

enter image description here


41
2018-01-29 20:54



Pada usaha cabang Anda:

git reset --hard origin/<branch_name>

Validasi pembalikan (ke negara, tanpa komitmen lokal), menggunakan "git log" atau "git status" karenanya.


27
2018-03-31 15:17



Hapus commit terbaru:

git reset --hard HEAD~1

Hapus komitmen terbaru, tanpa merusak pekerjaan yang telah Anda lakukan:

git reset --soft HEAD~1


12
2018-02-11 14:06



Untuk melihat / mendapatkan id sha1 dari commit, Anda juga ingin kembali

gitk --all

Untuk memutar kembali ke commit itu

git reset --hard sha1_id

!Catatan. Semua komit yang dibuat setelah komit itu akan dihapus (dan semua modifikasi Anda ke proyek). Jadi pertama klon proyek lebih baik ke cabang lain atau salin ke dir lain.


11
2018-05-27 10:07



Untuk komit lokal yang tidak didorong, Anda juga dapat menggunakan git rebase -i untuk menghapus atau menekan komit.


7
2017-10-17 21:43



Saya memiliki situasi di mana saya ingin menghapus komit yang tidak didorong tetapi komit sebelum yang lain. Untuk melakukannya saya telah menggunakan perintah berikut

git rebase -i HEAD~2 -> Ini akan rebase 2 commit terakhir

dan saya menggunakan 'drop' untuk tanda tangan komit yang ingin saya hapus.


5
2017-09-26 09:57



git reset --hard @{u}* Menghapus semua perubahan lokal Anda di cabang saat ini, termasuk commit. Saya terkejut tidak ada yang memposting ini namun mengingat Anda tidak perlu mencari tahu apa yang berkomitmen untuk kembali atau bermain dengan cabang.

* Yaitu, ulang ke cabang saat ini di @{upstream}—maka origin/<branchname>, tapi tidak selalu


2
2018-06-26 14:32