我有一个Git存储库,我想看一个文件如何查看特定的提交。
因此,要检索文件的所有提交,我使用的是git log [filepath]。 使用git log,应用程序将检索提交及其SHA值。
用于检索特定提交文件的Git命令是什么?
所以在伪代码中:
我已经尝试:
git show [SHA OF COMMIT] -- [REPODIRECTORY]
git show [SHA OF COMMIT]:[FILEPATH] > [NEW LOCATON]
这给了:
Error: fatal: Path 'D://Test//FolderName//FolderName//MyTestFile.cs' exists on disk,
but not in 'a2f3f51ee27d5711d2974f0256b4eed0b3225d44'.
答案 0 :(得分:2)
git show [SHA OF COMMIT]:[FILEPATH] > [NEW LOCATON]
应该是正确的语法。
但是[FILEPATH]
应该是path from the root of the repo,而不是主机驱动器磁盘的绝对文件路径。
<rev>:<path>, e.g. HEAD:README, :README, master:./README
后缀
:
后跟一个路径,命名在冒号前的部分命名的树形对象中给定路径上的blob或树。
:path
(在冒号前面有一个空的部分)是下面描述的语法的特例:在给定路径的索引中记录的内容。
以./
或../
开头的路径相对于当前工作目录。给定路径将转换为相对于工作树的根目录。
在你的情况下:
cd /d D:\Test\MyRepoFolder
git show a2f3f51ee27d5711d2974f0256b4eed0b3225d44:test.css > anotherpath\test.css
您将使用:test.css
,而不是:D://...
(绝对文件路径)
回购的根源是&#34; D:\Test\MyRepoFolder
&#34;。
因此,访问test.css
的路径应该相对于该根。
在OP的实例中,文件的确切路径为ReactiveUI\afile
,并且回购邮件位于D:\Test\ReactiveUI
,因此有点混乱。
即使根文件夹名为ReactiveUI
,使用的命令为:
git show <sha1>:ReactiveUI/afile
(使用&#39; /
&#39;,而不是&#39; \
&#39;,因为它是由Linux git bash解释的)
即,&#34;相对于仓库的根文件夹的路径&#34;。
注意:OP使用的ProcessInfo
课程不支持&#39; >
&#39;。
git命令输出的导出必须以编程方式完成。