Kembalikan dari perbaikan Git lama di repo publik

Bagaimana saya bisa kembali ke komit khusus di git?

Jawaban terbaik yang bisa diberikan seseorang kepada saya adalah menggunakan git revert X kali, sampai Anda mencapai komit yang diinginkan.

Jadi izinkan saya mengatakan bahwa saya ingin kembali ke komit, bahwa 20 komit, saya harus menjalankannya 20 kali.

Apakah ada cara yang lebih mudah untuk melakukan ini?

Saya tidak bisa menggunakan reset, karena repositori ini tersedia untuk umum.

609
05 янв. diatur oleh David 05 Jan 2010-01-05 20:01 '10 pada 20:01 2010-01-05 20:01
@ 8 jawaban

Coba ini:

 git checkout [revision] . 

di mana [revision] adalah hash komit (misalnya: 12345678901234567890123456789012345678ab ).

Jangan lupa pada akhirnya sangat penting. Ini akan menerapkan perubahan pada seluruh pohon. Anda harus menjalankan perintah ini di root proyek proyek git. Jika Anda berada di subdirektori, perintah ini hanya mengubah file di direktori saat ini. Kemudian komit, dan Anda harus baik.

Anda bisa membatalkannya.

 git reset --hard 

yang akan menghapus semua perubahan dari direktori kerja dan area pementasan.

900
05 янв. Balas diberikan oleh Alex Reisner 05 Jan 2010-01-05 20:07 '10 pada 20:07 2010-01-05 20:07

Kembalikan ke komit tertentu:

 git reset --hard commit_sha 

Rollback 10 menyelesaikan pekerjaan:

 git reset --hard HEAD~10 

Anda dapat menggunakan "git revert", seperti dalam pesan berikut, jika Anda tidak ingin menulis u>

Bagaimana cara mengembalikan repositori Git ke komit sebelumnya?

154
14 февр. Jawabannya diberikan oleh Naga Kiran pada 14 Feb. 2013-02-14 14:01 '13 pukul 14:01 2013-02-14 14:01

Nah, saya pikir pertanyaannya adalah, apa yang Anda maksud dengan "kembalikan"? Jika Anda tidak dapat reset , karena itu tersedia untuk umum, dan Anda ingin menjaga komit sejarah tetap utuh, apakah Anda bermaksud bahwa Anda hanya ingin copy pekerjaan Anda untuk mencerminkan komit tertentu? Gunakan git checkout dan lakukan hash.

Sunting: sebagaimana dinyatakan dalam komentar, menggunakan git checkout tanpa menentukan cabang akan membawa Anda ke status "tidak ada cabang". Gunakan git checkout <commit> -b <branchname> untuk check in cabang atau git checkout <commit> . untuk memeriksa cabang saat ini.

74
05 янв. Jawabannya diberikan oleh Ben pada 05 Januari. 2010-01-05 20:04 '10 jam 8:04 malam 2010-01-05 20:04

Poster aslinya berbunyi:

Jawaban terbaik yang bisa diberikan seseorang kepada saya adalah dengan menggunakan git revert X kali, sampai saya mencapai perbaikan yang diinginkan.

Jadi izinkan saya mengatakan bahwa saya ingin kembali ke komit, yaitu 20 komit, saya harus menjalankannya 20 kali.

Apakah ada cara yang lebih mudah untuk melakukan ini?

Saya tidak dapat menggunakan reset, karena repo ini tersedia untuk umum.

Tidak perlu menggunakan git revert X kali. git revert dapat mengambil rentang komit sebagai argumen, jadi Anda hanya perlu menggunakannya sekali untuk mengembalikan rentang komit. Misalnya, jika Anda ingin mengembalikan 20 komit terakhir:

 git revert --no-edit HEAD~20.. 

Rentang fiksasi HEAD~20.. kependekan dari HEAD~20..HEAD dan berarti "mulai dengan HEAD fiksasi induk ke-20 dan kembalikan semua fiksasi ke HEAD".

Ini akan mengembalikan 20 komit terakhir, dengan asumsi bahwa tidak ada dari mereka yang berkomitmen. Jika ada komit gabungan, maka Anda tidak dapat mengembalikan semuanya dalam satu perintah, Anda harus membatalkannya secara individual menggunakan

 git revert -m 1 <merge-commit> 

Perhatikan juga bahwa saya telah menguji menggunakan range dengan git revert dengan git versi 1.9.0. Jika Anda menggunakan versi git yang lebih lama, menggunakan rentang dengan git revert bisa atau tidak bisa.

git revert Lebih baik daripada git checkout

Perhatikan bahwa tidak seperti jawaban ini, yang mengatakan bahwa dengan menggunakan git checkout , git revert sebenarnya akan menghapus file apa pun yang telah ditambahkan ke salah satu komit yang Anda kembalikan , yang menjadikannya cara yang tepat untuk mengembalikan serangkaian perubahan.

Dokumentasi

35
21 апр. balasan diberikan oleh user456814 21 Apr 2014-04-21 23:12 '14 pada 23:12 2014-04-21 23:12

> menampilkan daftar commit:

 git log 

Anda akan mendapatkan daftar, seperti dalam contoh ini:

 [Comp:Folder User$ git log commit 54b11d42e12dc6e9f070a8b5095a4492216d5320 Author: author <author@gmail.com> Date: Fri Jul 8 23:42:22 2016 +0300 This is last commit message commit fd6cb176297acca4dbc69d15d6b7f78a2463482f Author: author <author@gmail.com> Date: Fri Jun 24 20:20:24 2016 +0300 This is previous commit message commit ab0de062136da650ffc27cfb57febac8efb84b8d Author: author <author@gmail.com> Date: Thu Jun 23 00:41:55 2016 +0300 This is previous previous commit message ... 

> Salin hash komit dan tempel untuk verifikasi:

 git checkout fd6cb176297acca4dbc69d15d6b7f78a2463482f 

Apa itu semua

20
12 июля '16 в 18:27 2016-07-12 18:27 jawabannya diberikan Igor 12 Juli '16 pada 18:27 2016-07-12 18:27
 git read-tree -um @ $commit_to_revert_to 

akan melakukannya. Ini "checkout git", tetapi tanpa memperbarui KEPALA.

Anda dapat mencapai efek yang sama dengannya

 git checkout $commit_to_revert_to git reset --soft @{1} 

jika Anda lebih suka menggabungkan perintah yang mudah bersama.

Mereka meninggalkan Anda dengan pohon kerja Anda dan indeks dalam keadaan yang diinginkan, Anda bisa menyelesaikan git commit .

8
06 февр. jawabannya diberikan oleh jthill 06 Feb. 2016-02-06 23:14 '16 pada 23:14 2016-02-06 23:14

Saya tidak yakin apa yang telah berubah, tetapi saya tidak dapat memverifikasi komit tertentu tanpa opsi --detach . Tim lengkap yang bekerja untuk saya adalah: git checkout --detach [commit hash]

Untuk kembali dari keadaan terputus, saya harus memeriksa cabang lokal saya: git checkout master

1
22 февр. jawabannya diberikan oleh ken pada 22 Februari 2017-02-22 14:45 '17 pukul 14:45 2017-02-22 14:45

Saya pikir saya mengerti pertanyaan Anda, itulah yang saya temukan untuk menyelesaikannya. dan tidak ada solusi GUI, Anda dapat menggunakan perintah hanya untuk menyelesaikannya, dan itu sangat sederhana.

>

sebagai tag v2.0

>

ini dia, sekarang KEPALA Anda menunjuk ke komit 'v2.0', tetapi wizard masih menunjuk komit terakhir.

C: \ Program Files \ Git \ doc \ Git \ html \ git -checkout.html Dokumen ini dapat membantu Anda.

atau masukkan git help <checkout>

0
02 дек. Jawabannya diberikan Zian Lai 02 Des. 2017-12-02 23:47 '17 pada 23:47 2017-12-02 23:47

Pertanyaan lain tentang tag atau Ajukan Pertanyaan