我在我的编辑器中打开了文件“main.cpp
”。
我也想在编辑器中看到“main.cpp
”的先前修订版。
我现在的做法是这样的。
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
是否可以简化,这样我就不必在编辑器中关闭“main.cpp”?
我希望的是
git-checkout
的变体可以做到这一点。更新:我在 mac osx 10.5.7 上使用 git
prompt> git --version
git version 1.6.0.4
prompt>
更新 2:Jakub Narębski 的回答是:
prompt> git show HEAD^:dir1/dir2/dir3/main.cpp > old_main.cpp
prompt>
UPDATE3:Karmi 的回答,针对特定修订:
prompt> git show 4c274dd91dc:higgs/Higgs.xcodeproj/project.pbxproj > old_project.pbxproj
prompt>
最佳答案
您可以使用 git show
:
git show HEAD^:main.cpp > old_main.cpp
(请注意,在 :
和 HEAD^
之间有冒号 [ main.cpp
] 字符。) <revision>:<path>
语法在 <path>
部分中描述,指向最后一个修订版“next21431”部分请注意,这里的
.git/
是 FULL 路径相对于 顶部目录 0x25148192142 目录 0x25148192142 与 18.133 的 243 目录的 18.133.18.18.18.18.18.13333333333 目录(或者,更准确地说,“”,通常可以是任何 ,即代表树的东西。)如果你想使用相对于当前目录的路径,你需要使用
./<path>
语法(或者 ../path
从当前目录上去)。编辑 2015-01-15: 添加了有关相对路径语法的信息
在大多数情况下,您可以使用低级(管道)
git cat-file
命令获得相同的输出:git cat-file blob HEAD^:main.cpp > old_main.cpp
关于git-checkout 以新名称对文件的旧版本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/888414/