浏览和显示git仓库中的文件,而不克隆
有没有办法浏览和显示git仓库中的文件,而不克隆它? 我可以使用以下命令在svn中执行这些操作:
svn ls / path / to / repo svn cat / path / to / repo / file-in-repo
我可以使用git show,但是这样做:
git show / path / to / repo git show HEAD:/ path / to / repo
导致
致命的:不是一个混帐存储库
你想要的命令是git ls-remote
,它允许你获得关于远程仓库的一些信息,但是你不能显示历史或者列表目录或者这个级别的任何东西:本质上,它只允许你看到远程对象在一个非常高级的例如,您可以看到当前的HEAD和标签)。
唯一真正的做法就是使用ssh来运行远程命令并返回结果,例如:
ssh me@otherhost "cd repo && git log -n 10"
如果可以添加它,你想要的将是可爱的function,但是从我读的内容来看,这并不是很容易,因为获取历史logging等需要大量的信息是git本地的,在这一点上,你也可以做一个git fetch 。
看看http://git-scm.com/book/en/Git-Internals-Transfer-Protocols ,了解如何通过一些传输协议做到这一点。 注意这不适用于通过SSH的标准git。
对于通过SSH的git,最新的服务器端git应该允许你直接从远程进行git-archive,然后你可以通过pipe道“tar t”来获得给定提交中所有文件的列表。
Git是分布式版本控制系统,而Subversion则是集中式 (客户端 – 服务器)版本控制系统。 他们工作不同, 习惯了。 请阅读我的答案,解释这种差异的后果,以git相当于svn status -u
问题在StackOverflow。
重复一下自己:在集中版本控制系统(如CVS或Subversion)中, 几乎所有的命令都在服务器上处理 ,并涉及到networking。 很less的命令在本地执行。 请注意,要获得“svn status”和“svn diff”的良好性能,Subversion会在客户端存储“检出版本”的“原始副本”,而不必为这些常见操作涉及networking传输(这意味着Subversion检出= 2 x工作目录的大小至less)。
在分布式版本控制系统(如Git,Mercurial或Bazaar)中,您拥有整个存储库的本地副本(克隆), 几乎所有命令都在客户端上执行 。 很less的命令需要networking连接到其他存储库(到服务器)。
您可以在服务器上执行的命令数量有限。
- 您可以使用“ git ls-remote <URL>” 列出远程的所有引用。
- 您可以获取(部分)存储库(如果远程服务器启用它)的快照
“ git archive –remote = <URL> HEAD”。 - 你可以克隆只有最后几个提交(所谓的“浅克隆”)
“ git clone –depth = 1 <URL>”。 - 如果服务器将git web界面提供给存储库,则可以使用它来浏览。
GitHub是svn兼容的,所以你可以使用svn ls
svn ls https://github.com/user/repository.git/branches/master/
BitBucket支持git归档,所以你可以下载tar归档文件和列表归档文件。 这不是很有效,但工作:
git archive --remote=git@bitbucket.org:repository HEAD directory | tar -t
不是确切的,但一个方法。
使用GitHub开发者API
-
打开这个会让你最近的提交。
https://api.github.com/repos/learningequality/ka-lite/commits
通过在上面的url的末尾附加提交哈希,你可以得到具体的提交细节。
-
所有的文件(你需要为主树)
我希望这可以帮助。
这可能被某些人认为是肮脏的,但在github仓库的情况下,一个非常实际的解决scheme只是做一个脚本,例如“git-ls”:
#!/bin/sh remote_url=${1:? "$0 requires URL as argument"} curl -s $remote_url | grep js-directory-link | sed "s/.* title=\"\(.*\)\".*/\1/"
使其可执行和可访问,当然: chmod a+x git-ls; sudo cp git-ls /usr/local/bin
chmod a+x git-ls; sudo cp git-ls /usr/local/bin
。 现在,你只要按照你的意愿运行它:
git-ls https://github.com/mrquincle/aim-bzr git-ls https://github.com/mrquincle/aim-bzr/tree/master/aim_modules
也知道你的本地文件有一个git instaweb
工具。 有能力显示文件,并有一个这样的服务器在我看来不会破坏任何固有的分散特性的git。
如果你知道你想检查的远程分支,你可以find最新的通过:
git ls-tree -r <remote_branch> --name-only