我在我的编辑器中打开了文件“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/

10-13 09:19