我正在寻找在Git中等效于svn cat
的命令。
是的,我知道有一个类似的问题在这里被问到了。答案是使用git show rev:path
。
但是,svn cat
可以用于远程仓库。也就是说,我可以执行svn cat url@rev
并从指定版本的远程仓库获取文件,而不必获取整个仓库。我的理解是git show
只适用于本地仓库。
我发现的一种解决方法是使用gitweb界面来获取blob。
我正在寻找在Git中等效于svn cat
的命令。
是的,我知道有一个类似的问题在这里被问到了。答案是使用git show rev:path
。
但是,svn cat
可以用于远程仓库。也就是说,我可以执行svn cat url@rev
并从指定版本的远程仓库获取文件,而不必获取整个仓库。我的理解是git show
只适用于本地仓库。
我发现的一种解决方法是使用gitweb界面来获取blob。
以下是一个在Git的最新版本中可以使用的技巧,它允许你从远程仓库(你有Git访问权限)中获取单个文件,而无需克隆整个仓库:
git archive --remote=git@gitserver.example.com:myrepo master path/to/file1 | tar -xOf - > file1
以上代码从master
获取文件。根据您的需求进行修改。
git fetch
git show remotes/origin/master:<filename>
显然你的远程分支可能不在remotes/origin/master
。
如果你的动机是最小化下载和/或存储在本地磁盘上的数据量,你可以尝试以下命令。
git clone --depth=1 --bare REPO
cd REPO.git
git show HEAD:PATH/TO/FILE
--depth=1
的意思是你只会下载最新的版本,而不包括历史版本。--bare
的意思是你将下载远程仓库,但不会创建任何工作目录,从而节省本地磁盘空间。
请注意,如果你想获取文件的某个历史版本而不是最新版本,上述命令将无法工作,因为它们不会下载任何历史记录。