Saya memiliki file " main.cpp
" terbuka di editor saya.
Saya ingin melihat revisi sebelumnya dari "main.cpp
" sebelumnya di editor juga.
Cara saya melakukannya sekarang adalah seperti ini.
close "main.cpp" in the editor
prompt> mv main.cpp tmp
prompt> git checkout HEAD^ main.cpp
prompt> mv main.cpp old_main.cpp
prompt> mv tmp main.cpp
prompt>
open "main.cpp" and "old_main.cpp" in the editor
Bisakah ini disederhanakan, jadi saya tidak perlu menutup "main.cpp" di editor?
Yang saya harapkan adalah varian git-checkout
yang bisa melakukan ini.
UPDATE: saya menggunakan git di mac osx 10.5.7
prompt> git --version
git version 1.6.0.4
prompt>
UPDATE2: Jawaban Jakub Narębski adalah:
prompt> git show HEAD^:dir1/dir2/dir3/main.cpp > old_main.cpp
prompt>
UPDATE3: Jawaban Karmi, untuk revisi tertentu:
prompt> git show 4c274dd91dc:higgs/Higgs.xcodeproj/project.pbxproj > old_project.pbxproj
prompt>
Jawaban:
Anda dapat menggunakan "git show" untuk itu:
(Perhatikan bahwa ada
:
karakter titik dua [ ] di antaraHEAD^
danmain.cpp
.)<revision>:<path>
Sintaksnya dijelaskan dalam manual git rev-parse , di sebelah titik terakhir di bagian "Menentukan revisi":Perhatikan bahwa di
<path>
sini adalah path LENGKAP relatif terhadap direktori teratas proyek Anda, yaitu direktori dengan.git/
direktori. (Atau lebih tepatnya ke " <revisi> " (yang secara umum dapat berupa <tree-ish> , yaitu sesuatu yang mewakili pohon))Jika Anda ingin menggunakan jalur relatif ke direktori saat ini, Anda perlu menggunakan
./<path>
sintaks (atau../path
naik dari direktori saat ini).Edit 2015-01-15: menambahkan informasi tentang sintaks jalur relatif
Dalam kebanyakan kasus, Anda bisa mendapatkan output yang sama menggunakan
git cat-file
perintah level rendah (plumbing) :sumber
Hanya untuk menambah jawaban Jakub: Anda bahkan tidak perlu mengarahkan ulang output ke file
>
, jika Anda hanya tertarik membaca sekilas isi file di terminal. Anda bisa berlari$ git show 58a3db6:path/to/your/file.txt
.sumber