首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git-签出新名称下文件的旧版本。

git-签出新名称下文件的旧版本。
EN

Stack Overflow用户
提问于 2009-05-20 14:52:07
回答 2查看 69.1K关注 0票数 329

我的编辑器中打开了"main.cpp“文件。

我也想在编辑器中看到"main.cpp“之前的修订版。

我现在的做法是这样的。

代码语言:javascript
复制
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的一个变体能够做到这一点。

更新:我在MacOSX10.5.7上使用git

代码语言:javascript
复制
prompt> git --version
git version 1.6.0.4
prompt> 

UPDATE2: Jakub Narębski的答案是:

代码语言:javascript
复制
prompt> git show HEAD^:dir1/dir2/dir3/main.cpp > old_main.cpp
prompt>

UPDATE3: Karmi的答案,具体修改如下:

代码语言:javascript
复制
prompt> git show 4c274dd91dc:higgs/Higgs.xcodeproj/project.pbxproj > old_project.pbxproj
prompt> 
EN

回答 2

Stack Overflow用户

发布于 2009-05-20 21:18:32

为了补充Jakub的回答:如果您只想在终端中浏览文件内容,甚至不必将输出重定向到带有>的文件。您可以只运行$ git show 58a3db6:path/to/your/file.txt

票数 27
EN

Stack Overflow用户

发布于 2021-01-29 14:02:46

单文件用例

为了获得一致的签出行为(包括autocrlf等),请使用辅助文件夹(TEMP作为示例)并从旧的/不同的<commit>恢复文件状态,如下所示:

代码语言:javascript
复制
git --work-tree TEMP/ restore main.cpp -s <commit>
mv TEMP/main.cpp old_main.cpp

使用别名使其成为一行命令。

代码语言:javascript
复制
git restore-as old_main.cpp main.cpp -s <commit>

创建别名:

代码语言:javascript
复制
git config --global alias.restore-as "!f() { git --work-tree /tmp/ restore $2 $3 $4 $5 $6 && mv -iv /tmp/$2 $1; }; f"

(最好在创建该目录之后,将/tmp/替换为为此类操作保留的目录--例如/tmp/gitmv )。

注意:

代码语言:javascript
复制
git show <commit>:main.cpp > old_main.cpp

。。只会从存储库中生成一个原始读取。

使用第二个工作树链接或匿名。

一个长期的并行工作树(通过主工作树链接/已知的存储库)可以通过git-工作树 (新的自gitv2.6.7)使用,并且可以将它的头放在另一个分支/ <commit>上:

代码语言:javascript
复制
git worktree add [<options>] <new-worktree-path> [<commit-ish>]

可以在不需要初始签出(--no-checkout)的情况下创建工作树,然后可以配置sparse-checkout,或者仅通过git restore -s <commit> <file(s)/sub-dir>检索选定的单个文件/子目录。

同样,也可以创建一个额外的匿名工作树(共享头部),只需将一个文件.git与内容一起放入其中。

代码语言:javascript
复制
gitdir: <MAIN-REPO-WORKTREE>/.git
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/888414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档