git-checkout以新名称更新文件的旧版本
我在我的编辑器中打开了文件“main.cpp
”。git-checkout以新名称更新文件的旧版本
我想在编辑器中看到“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
prompt> git --version
git version 1.6.0.4
prompt>
混帐IM UPDATE2:的JakubNarębski答案是:
prompt> git show HEAD^:dir1/dir2/dir3/main.cpp > old_main.cpp
prompt>
UPDATE3:果报工作者的答案,对于特定的修订:
prompt> git show 4c274dd91dc:higgs/Higgs.xcodeproj/project.pbxproj > old_project.pbxproj
prompt>
您可以使用 “混帐秀” 为:
prompt> git show HEAD^:main.cpp > old_main.cpp
(请注意,没有冒号HEAD^
和main.cpp`之间 ':
' 字符。)的“<修订>: <路径>指定版本‘部分“语法在git rev-parse手册页中所描述的,倒数第二个点’:
- <转>:<路径>,例如HEAD:自述,:自述,主:./自述
后跟一个路径名在由所述冒号之前的部分命名树肥胖型对象的给定路径上的斑点或树后缀
:
。:path
(在冒号前有一个空的部分)是下面描述的语法的特例:记录在给定路径的索引中的内容。以
./
或../
开头的路径与当前工作目录相关。给定的路径将被转换为相对于工作树的根目录。这对于从具有与工作树相同树结构的提交或树来处理blob或树是非常有用的。
注意, “<路径>” 这里到处是相对路径项目的顶级目录,即具有.git/
目录的目录。 (或者更精确地说为“<修订>”(这一般可以是任何<树十岁上下>,即一些代表树))
如果你想使用相对路径添加到当前目录下,你需要使用“./ <路径>‘语法(或’../ <路径>”从当前目录上)。
编辑2015年1月15日:增加了大约相对路径语法信息
可以使用低级别(管道),在大多数情况下得到的结果相同git cat-file
命令:
prompt> git cat-file blob HEAD^:main.cpp > old_main.cpp
只是为了增加的Jakub的回答是:你甚至不用到输出到文件重定向与>
,如果你只是在走过场文件感兴趣在终端中的内容。您可以运行$ git show 58a3db6:path/to/your/file.txt
。
你用什么编辑器?也许它有插件/插件/模块添加支持Git? – 2009-05-20 15:25:08
我使用textmate。它有一些git的支持,我没有检查,但如果它可以做到这一点。 – neoneye 2009-05-20 15:40:16
的TextMate有混帐束:http://github.com/timcharper/git-tmbundle(你应该检查InterfacesFrontendsAndTools页git的维基:http://git.or.cz/gitwiki/) – 2009-05-20 16:13:58