git-checkout一个新名字下的文件的旧版本
我在我的编辑器中打开了“ 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
它可以被简化,所以我不必closures编辑器中的“main.cpp”?
我所希望的是可以做到这一点的git-checkout
变体。
更新:即时通讯在Mac OS X 10.5.7上使用git
prompt> git --version git version 1.6.0.4 prompt>
UPDATE2:JakubNarę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”:
prompt> git show HEAD^:main.cpp > old_main.cpp
(注意在HEAD^
和main.cpp之间有冒号' :
')。“ 修改 : <path> ”语法在git rev-parse联机帮助中描述,在“指定修订”部分:
- <rev>:<path>,例如HEAD:README,:README,master:./ README
一个后缀
:
后跟一个path,在冒号之前的部分所指定的tree-ish对象的给定path中命名blob或tree。:path
(在冒号前有一个空的部分)是下面描述的语法的特例:logging在给定path索引处的内容。以
./
或../
开头的path与当前工作目录相关。 给定的path将被转换为相对于工作树的根目录。 这对于从具有与工作树相同的树结构的提交或树来处理blob或树是非常有用的。
请注意,这里的“ <path>是相对于你的项目的顶层目录的完整path,即带有.git/
目录的目录。 (或者更确切地说“ <修改> ”(通常可以是<tree-ish> ,即表示树的东西))
如果要使用相对于当前目录的path,则需要使用“./ <path>”语法(或“../ <path>”从当前目录上移)。
编辑2015-01-15:添加关于相对path语法的信息
您可以在大多数情况下使用低级(pipe道) git cat-file
命令获得相同的输出:
prompt> git cat-file blob HEAD^:main.cpp > old_main.cpp
只需要添加Jakub的答案:如果您只想浏览terminal中的文件内容,则甚至不必将输出redirect到具有>
的文件。 你可以运行$ git show 58a3db6:path/to/your/file.txt
。
git show命令也不适用于我(使用1.6.4.msysgit)。 也许与Windowspath分隔符有关?
我结束了只是下载和使用QGit ….更容易!