Pertanyaan Setel ulang atau kembalikan file tertentu ke revisi tertentu menggunakan Git?


Saya telah membuat beberapa perubahan pada file yang telah dilakukan beberapa kali sebagai bagian dari sekelompok file, tetapi sekarang ingin mengatur ulang / mengembalikan perubahan pada kembali ke versi sebelumnya.

Saya telah melakukan git log bersama dengan git diff untuk menemukan revisi yang saya butuhkan, tetapi tidak tahu bagaimana mengembalikan file ke keadaan sebelumnya di masa lalu.


3443
2017-10-18 23:34


asal


Jawaban:


Dengan asumsi hash dari komitmen yang Anda inginkan adalah c5f567:

git checkout c5f567 -- file1/to/restore file2/to/restore

Itu checkout git halaman manual memberikan informasi lebih lanjut.

Jika Anda ingin kembali ke commit sebelumnya c5f567, menambahkan ~1 (bekerja dengan nomor apa saja):

git checkout c5f567~1 -- file1/to/restore file2/to/restore

Sebagai catatan tambahan, saya selalu merasa tidak nyaman dengan perintah ini karena digunakan untuk hal-hal biasa (berpindah antar cabang) dan hal-hal yang tidak biasa dan merusak (membuang perubahan dalam direktori kerja).


4654
2017-10-18 23:39



Anda dapat dengan cepat meninjau perubahan yang dilakukan pada file menggunakan perintah diff:

git diff <commit hash> <filename>

Kemudian untuk mengembalikan file tertentu ke commit tersebut, gunakan perintah reset:

git reset <commit hash> <filename>

Anda mungkin perlu menggunakan --hard pilihan jika Anda memiliki modifikasi lokal.

Alur kerja yang baik untuk mengelola titik jalan adalah menggunakan tag untuk menandai poin dengan rapi di linimasa Anda. Saya tidak dapat memahami kalimat terakhir Anda, tetapi apa yang Anda inginkan adalah menyimpang cabang dari titik waktu sebelumnya. Untuk melakukan ini, gunakan perintah checkout yang praktis:

git checkout <commit hash>
git checkout -b <new branch name>

Anda kemudian dapat melakukan rebase terhadap mainline Anda ketika Anda siap untuk menggabungkan perubahan tersebut:

git checkout <my branch>
git rebase master
git checkout master
git merge <my branch>

508
2017-12-17 06:59



Anda dapat menggunakan referensi apa pun untuk melakukan commit git, termasuk SHA-1 jika itu yang paling nyaman. Intinya adalah perintah itu terlihat seperti ini:

git checkout [commit-ref] -- [filename]


305
2018-04-07 21:48



git checkout -- foo

Itu akan diatur ulang foo ke kepala. Anda juga bisa:

git checkout HEAD^ foo

untuk satu revisi kembali, dll.


243
2017-08-29 20:56



Dan untuk kembali ke versi commit terakhir, yang paling sering dibutuhkan, Anda dapat menggunakan perintah yang lebih sederhana ini.

git checkout HEAD file/to/restore

106
2018-01-14 06:15



Saya memiliki masalah yang sama sekarang dan saya temukan jawaban ini termudah untuk dipahami (commit-ref adalah nilai SHA dari perubahan dalam log yang Anda ingin kembali ke):

git checkout [commit-ref] [filename]

Ini akan menempatkan versi lama itu di direktori kerja Anda dan dari sana Anda dapat melakukannya jika Anda mau.


100
2018-05-27 17:52



Jika Anda tahu berapa banyak komitmen yang perlu Anda kembalikan, Anda dapat menggunakan:

git checkout master~5 image.png

Ini mengasumsikan bahwa Anda berada di master cabang, dan versi yang Anda inginkan adalah 5 commit kembali.


85
2018-04-07 14:03



Saya pikir saya telah menemukannya .... dari http://www-cs-students.stanford.edu/~blynn/gitmagic/ch02.html

Terkadang Anda hanya ingin kembali dan melupakan setiap perubahan melewati titik tertentu karena semuanya salah.

Dimulai dari:

$ git log

yang menunjukkan daftar komitmen terbaru, dan hash SHA1 mereka.

Selanjutnya, ketik:

$ git reset --hard SHA1_HASH

untuk mengembalikan negara ke komitmen yang diberikan dan menghapus semua commit yang lebih baru dari catatan secara permanen.


75
2017-12-17 06:53