如何在git repo

时间:2018-07-11 04:13:00

标签: git

如果我在c:\ myrepo \ source中有一个存储库,并且该存储库中有一个名为myfile.txt的文件具有多个版本,并且我在另一个文件夹中有myfile.txt的旧副本,例如c:\ temp \ myfile。 txt是否可以检查回购中是否存在该版本,而无需将其复制到当前文件上?

2 个答案:

答案 0 :(得分:2)

首先,您需要获取文件的Blob ID:

c:\myrepo\source>git hash-object "c:\temp\myfile.txt"
f70d6b139823ab30278db23bb547c61e0d4444fb

然后,您可以使用ID来查找路径和添加路径。

使用git 2.16+可以很容易:

c:\myrepo\source>git describe --always f70d6b139823ab30278db23bb547c61e0d4444fb
e76967c:path/to/myfile.txt

对于较旧的git版本,您将需要一个脚本来爬网所有提交和树以找到该blob,如以下答案所示:https://stackoverflow.com/a/223890/447503

对于文本文件,当有不同的CRLF归一化时(默认和仓库中的),需要注意。然后git hash-object可能会打印错误的值。

例如,在Cygwin上,这将有所帮助:

$ git hash-object "c:\temp\myfile.txt"
4a2cdc2c8fc21f625d69b9b9197004fbbd2de76b
basin@BASIN /cygdrive/c/myrepo/source
$ git -c core.autocrlf=true hash-object "c:\temp\myfile.txt"
f70d6b139823ab30278db23bb547c61e0d4444fb

答案 1 :(得分:0)

您可以:

如果这些差异之一为空,则说明您的旧副本已被版本控制。