在CVS中,我们可以使用"rtag"命令以编程方式创建现有源的新分支,该命令不需要存储库的副本.
git是否支持这种功能,在没有本地副本的情况下在远程git存储库中创建现有文件的分支?或者git的分布式特性是否排除了这个?
(我正在尝试节省20多分钟来制作存储库的独立副本,只是为了运行'git branch'命令.)
编辑以获取更多信息:
如果我们有一个带有分支"ReleaseCandidate"的cvs存储库和一个名为"makearelease.sh"的脚本,该脚本可以在一个随机的空目录中运行像"cvs rtag -r ReleaseCandidate -b Release1p0"这样的命令并创建一个新的名为"Release1p0"的分支包含"ReleaseCandidate"分支中的所有文件,它不需要来自存储库或CVS分支"ReleaseCandidate"的文件的任何本地副本.
在git中,所有存储库始终是本地的.你可以拥有一个本地存储库的远程接口(例如,这就是github的API给你的:repo是github的本地,API是一个接口),但是repo本身是本地的.所以没有"远程回购"这样的东西,在这里你的意思是,只是一个"远程接口".
也就是说,可以使用内置的远程接口(例如,推送协议git使用ssh)来创建新的分支或轻量级标签,而不实际拥有本地克隆,因为推送协议通过接收远程的refs开始(a la git ls-remote
),然后执行推送的系统可以发送对象包,ref更新或两者.您可以使用已知的(来自已接收的引用)头部SHA1 发送refs/heads/foo
或refs/tags/foo
引用,并将其称为好...但由于您可能会丢失与其他人添加新提交的竞争,并从中分支或标记,因此这将非常容易出错,错误的提交.因此,git没有内置任何东西来做到这一点.
所以,你可以写一个,但可能需要20多分钟.:-)