我的编辑器中打开了"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的一个变体能够做到这一点。
更新:我在MacOSX10.5.7上使用git
prompt> git --version
git version 1.6.0.4
prompt> UPDATE2: 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> 发布于 2009-05-20 21:18:32
为了补充Jakub的回答:如果您只想在终端中浏览文件内容,甚至不必将输出重定向到带有>的文件。您可以只运行$ git show 58a3db6:path/to/your/file.txt。
发布于 2021-01-29 14:02:46
单文件用例
为了获得一致的签出行为(包括autocrlf等),请使用辅助文件夹(TEMP作为示例)并从旧的/不同的<commit>恢复文件状态,如下所示:
git --work-tree TEMP/ restore main.cpp -s <commit>
mv TEMP/main.cpp old_main.cpp使用别名使其成为一行命令。
git restore-as old_main.cpp main.cpp -s <commit>创建别名:
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 )。
注意:
git show <commit>:main.cpp > old_main.cpp。。只会从存储库中生成一个原始读取。
使用第二个工作树链接或匿名。
一个长期的并行工作树(通过主工作树链接/已知的存储库)可以通过git-工作树 (新的自gitv2.6.7)使用,并且可以将它的头放在另一个分支/ <commit>上:
git worktree add [<options>] <new-worktree-path> [<commit-ish>]可以在不需要初始签出(--no-checkout)的情况下创建工作树,然后可以配置sparse-checkout,或者仅通过git restore -s <commit> <file(s)/sub-dir>检索选定的单个文件/子目录。
同样,也可以创建一个额外的匿名工作树(共享头部),只需将一个文件.git与内容一起放入其中。
gitdir: <MAIN-REPO-WORKTREE>/.githttps://stackoverflow.com/questions/888414
复制相似问题