git有功能lke cvs的rtag

sim*_*ser 3 git

在CVS中,我们可以使用"rtag"命令以编程方式创建现有源的新分支,该命令不需要存储库的副本.

git是否支持这种功能,在没有本地副本的情况下在远程git存储库中创建现有文件的分支?或者git的分布式特性是否排除了这个?

(我正在尝试节省20多分钟来制作存储库的独立副本,只是为了运行'git branch'命令.)

编辑以获取更多信息:

如果我们有一个带有分支"ReleaseCandidate"的cvs存储库和一个名为"makearelease.sh"的脚本,该脚本可以在一个随机的空目录中运行像"cvs rtag -r ReleaseCandidate -b Release1p0"这样的命令并创建一个新的名为"Release1p0"的分支包含"ReleaseCandidate"分支中的所有文件,它不需要来自存储库或CVS分支"ReleaseCandidate"的文件的任何本地副本.

tor*_*rek 5

在git中,所有存储库始终是本地的.你可以拥有一个本地存储库的远程接口(例如,这就是github的API给你的:repo是github的本地,API是一个接口),但是repo本身是本地的.所以没有"远程回购"这样的东西,在这里你的意思是,只是一个"远程接口".

也就是说,可以使用内置的远程接口(例如,推送协议git使用ssh)来创建新的分支或轻量级标签,而不实际拥有本地克隆,因为推送协议通过接收远程的refs开始(a la git ls-remote),然后执行推送的系统可以发送对象包,ref更新或两者.您可以使用已知的(来自已接收的引用)头部SHA1 发送refs/heads/foorefs/tags/foo引用,并将其称为好...但由于您可能会丢失与其他人添加新提交的竞争,并从中分支或标记,因此这将非常容易出错,错误的提交.因此,git没有内置任何东西来做到这一点.

所以,你可以写一个,但可能需要20多分钟.:-)

  • 这意味着您可以直接访问裸存储库(通过NFS驱动器).所以你可以只需`cd/the/mount/point/foo.git`并在那里运行普通的git命令.只需使用`git branch ...`或`git tag ...`就像使用任何其他本地仓库一样.(分支和标签在裸仓上工作.) (2认同)