我有一个Git存储库,我想看看几个月前一些文件的样子.我在那个日期找到了修改版,而且它是27cf8e84bb88e24ae4b4b3df2b77aab91a3735d8.我需要查看一个文件的外观,并将其保存到文件中.
我设法看到文件使用gitk,但它没有保存选项.我尝试使用命令行工具,我得到的最接近的是:
git-show 27cf8e84bb88e24ae4b4b3df2b77aab91a3735d8 my_file.txt
Run Code Online (Sandbox Code Playgroud)
但是,此命令显示diff而不是文件内容.我知道我以后可以使用类似的东西PAGER=cat并将输出重定向到文件,但我不知道如何获得实际的文件内容.
基本上,我正在寻找类似svn cat的东西.
我想提取一个git存储库中保存的文件的最新版本的副本,并将其传递给脚本进行一些处理.使用svn或hg,我只使用"cat"命令:
按指定的修订版打印指定的文件.如果没有给出修订,则使用工作目录的父级,如果没有签出修订,则提示.
(这是来自hg文档中hg cat的描述)
使用git执行此操作的等效命令是什么?
我有一个.tex来自许多提交前的文件版本,我想获得一份副本.我有提交的sha1哈希值,它具有我想要的那个文件的版本.我不想替换当前版本的文件.相反,我想获得一个单独的副本,反映它在旧版本中的状态.
许多类似的问题建议使用git checkout <sha1> -- file.tex,但这只是一直给出"错误:pathspec'file.tex'与git已知的任何文件都不匹配."
我感兴趣的文件最初存在于存储库的顶级目录中.我目前在存储库的子目录中尝试运行此命令,以便在子目录中获取旧版本的file.tex.
这可能吗?我怎样才能做到这一点?
使用git,我想列出给定文件的所有不同修订版.
然后,我想选择一个特定的版本,并在另一个版本时进行比较.
我怎样才能做到这一点?
假设我在目录中有我的东西的git repo myapp:
myapp
/.git
/.gitignore
/subdirA
/subdirB
/file1.txt
/file2.txt
/(and some other stuffs)
/(and some other stuffs)
Run Code Online (Sandbox Code Playgroud)
我想file1.txt从旧提交中查看abcd123.对于另一个线程,我了解到我应该使用类似的东西:
$ git show abcd123:path/to/file1.txt
Run Code Online (Sandbox Code Playgroud)
但是,我对使用正确的路径感到困惑.我尝试过类似的东西
$ git show abcd123:myapp/subdirA/subdirB/file1.txt
$ git show abcd123:subdirA/subdirB/file1.txt
$ git show abcd123:subdirB/file1.txt
$ git show abcd123:file1.txt
Run Code Online (Sandbox Code Playgroud)
但是git不断给我一些错误信息
$ Path 'subdirA/subdirB/file1.txt' does not exist in 'abcd123'
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题呢?
在ClearCase中,如果我正在处理某个文件X并想要查看其先前版本(比如版本5),则可以使用它X@@/main/5.是否有类似的其他(最好是免费的)版本控制系统?
水银有hg cat和hg co,但他们仍然不接近的ClearCase的功能之上.
在应用所有更改后,有没有办法找出整个文件在特定提交中的样子?我知道2个文件(添加和删除的内容)之间存在差异,这就是git中显示的内容.但这不是我想要的.
我正在审查一个非常旧的提交.我希望看到特定提交所做的更改,但我想在完整的上下文中看到它,即我想查看整个文件以及该人所做的更改.以下命令,
git show -w <commit-id>
Run Code Online (Sandbox Code Playgroud)
没有向我展示完整的背景.有什么建议吗?