Bagaimana saya bisa membuka revisi file tertentu dengan Magit?

43

Apakah mungkin untuk membuka revisi file tertentu di Emacs dengan Magit tanpa mengubah cabang saat ini?

Saya telah mengubah beberapa perubahan lokal menjadi revisi di mana fungsi yang diubah digantikan oleh fungsionalitas dalam file yang berbeda. Saya ingin membuka revisi lama dari perubahan saya di buffer terpisah sehingga saya dapat membandingkan perubahan berdampingan.

Solusi hacky saya saat ini adalah untuk menjalankan git show <branch pre-rebase>:file > old_filedan kemudian terbuka old_filedi Emacs.

David Holm
sumber
1
github.com/pidu/git-timemachine dapat melihat file di antara setiap versi secara sekilas untuk sementara waktu.
kuanyui
1
@kuanyui saya gunakan git-timemachinetetapi karena kode saya telah ditata ulang saya tidak berpikir itu akan berfungsi karena kode lama bukan bagian dari sejarah cabang saat ini?
David Holm

Jawaban:

56

Anda dapat melihat file untuk revisi tertentu menggunakan M-x magit-find-file RET <filename> RET.

Atau Anda dapat pertama-tama melihat diff untuk komit dengan menekannya RET, menavigasi ke file di dalam diff, dan kemudian menekan RETlagi.

Kyle Meyer
sumber
8
Ini bekerja untuk saya; inilah yang saya lakukan: dari versi file saat ini M-x magit-log-buffer-file,, pindahkan baris ke komit yang diinginkan, kemudian M-x magit-find-file. Maka nilai default adalah komit itu. Saya harus memberikan path ke file karena ini tidak diambil dari buffer log.
Liam
@tarsius, Agak suka magit-find-file tetapi di mana saya hanya perlu memilih revisi untuk file buffer saat ini. Apakah sudah ada?
ergosys
Ya, gunakan magit-find-filesendiri dari buffer kunjungan file dan kemudian ketik saja RETprompt kedua (file yang tepat ditawarkan sebagai default).
tarsius
Terima kasih atas info dan semua pekerjaan Anda di Magit. Tidak terlalu sulit untuk meretas fungsi yang melompati keystroke ekstra sial itu, jadi saya senang sampai gatal berikutnya terjadi.
ergosys
29

Itu mungkin dilakukan dengan VC biasa (bawaan untuk Emacs), tanpa Magit. Ketik C-x v ~dan ketikkan versi yang Anda inginkan. Ia memahami tag dan hash SHA1, serta ~1sufiks dll yang biasa .

legoscia
sumber
Ini bukan jawaban untuk pertanyaan magit. Apakah Anda memposting jawaban C untuk pertanyaan Ruby?
Bryan Ash
4
@BryanAsh ya, jika solusi dalam C jauh lebih mudah.
Markus Strauss