Git相当于`svn cat`和远程存储库

时间:2010-05-15 05:21:42

标签: git svn

我在git中寻找等价的svn cat

是的,我知道the similar question在这里被问到了。答案是使用git show rev:path

但是,svn cat可用于远程存储库。也就是说,我可以执行svn cat url@rev并从远程存储库的指定版本获取文件,而无需获取整个存储库。我的理解是git show仅适用于本地存储库。

我找到的解决方法是使用gitweb接口来获取blob。

4 个答案:

答案 0 :(得分:9)

如果您的动机是尽量减少下载和/或存储在本地磁盘上的数据量,您可以尝试以下命令。

git clone --depth=1 --bare REPO
cd REPO.git
git show HEAD:PATH/TO/FILE

--depth=1表示您只会下载最新版本,而不会下载任何历史记录。 --bare表示您将下载远程存储库,但实际上不会创建任何工作树,从而节省了本地磁盘空间。

请注意,如果您对最新版本以外的文件感兴趣,则上述命令将无效,因为它们不会下载任何历史记录。

答案 1 :(得分:8)

git fetch
git show remotes/origin/master:<filename>

显然,您的远程分支可能不在remotes/origin/master

答案 2 :(得分:8)

这是一个 hack ,您可以使用最新版本的Git从远程仓库(您可以访问Git)获取单个文件,而无需克隆回购:

git archive --remote=git@gitserver.example.com:myrepo master path/to/file1 | tar -xOf - > file1

以上从master获取文件。根据您的需要进行修改。

答案 3 :(得分:3)

another thread中提到不可能获取单个文件。因此,唯一的选择是获取远程存储库,或者使用其他工具(例如Web浏览器)查看文件。

Github非常支持在线查看文件,如果你想留在命令行上,你可以将它与curl集成。对于其他存储库,可能没有这样的功能。