-6ren">
gpt4 book ai didi

git-checkout 以新名称检查文件的旧版本

转载 作者:IT王子 更新时间:2023-10-29 01:14:13 25 4
gpt4 key购买 nike

我在编辑器中打开了文件“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> git rev-parse 中描述了语法联机帮助页,在“指定修订”部分的最后一点旁边:

<rev>:<path>, e.g. HEAD:README, :README, master:./README

A suffix : followed by a path names the blob or tree at the given path in the tree-ishobject named by the part before the colon. :path (with an empty part before the colon)is a special case of the syntax described next: content recorded in the index at thegiven path. A path starting with ./ or ../ is relative to the current working directory.The given path will be converted to be relative to the working tree’s root directory.This is most useful to address a blob or tree from a commit or tree that has the sametree structure as the working tree.

请注意 <path>这是相对于项目的顶层目录FULL 路径,即带有.git/ 的目录目录。 (或者,更准确地说,“ ”,它通常可以是任何 ,即代表树的东西。)

如果要使用相对于当前目录的路径,需要使用./<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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com