获取/克隆一个Git仓库的只读副本的命令是什么?

43

这是一个在github上的git存储库:

git://github.com/Fudge/gltail.git

使用git命令行工具,最简单的方式是如何检出只读副本?

更新:这里有一个建议给GitHub开发者们:做一些类似于Google Code的事情,自动显示如下消息:

Use this command to anonymously check out the latest project source code:
    # Non-members may check out a read-only working copy anonymously over HTTP.
    svn checkout http://orapig.googlecode.com/svn/trunk/ orapig-read-only

更新: Github 的开发人员已经完成了这个。


5
请注意,Git 实际上没有(也不需要)只读副本。您将拥有完整的(本地)存储库副本,并可以随心所欲地使用它。 - Thilo
我只是引用来自Github(github.com/Fudge/gltail)的内容,其中指定下载为“HTTP只读”。 - Mark Harrison
4
也许“仅拉取”会更准确:这意味着您可以通过HTTP检索存储库的副本,但您无法通过同一URL将提交“推送”到GitHub上的该特定存储库。一旦您拥有克隆版本,就拥有了整个历史记录的本地副本,可以随意操纵。 - Greg Bacon
1
谢谢你提出这个问题!GitHub不能直接说吗?干杯!+1 - andy
1
我有同样的问题,也来自于SVN,在那里这些事情很容易和合乎逻辑。我的用例是,我只想获取最新版本的只读副本,以便在服务器上运行它 - 即将其用作简单的部署工具(部署=获取head)。我不需要仓库、历史记录或推送回的能力。 - John Little
@JohnLittle,事实证明无论如何你都可以得到一个本地完全运行的仓库。你没有写回源代码的权限,因此在这个意义上它是只读的。对于你的需求,只需执行“git clone”,进行所需操作,然后随意删除克隆目录,不会产生任何不良影响。 - Mark Harrison
4个回答

51
git clone git://github.com/Fudge/gltail.git

你好,@mipadi,请问如何在终端中获取git命令?Github已经安装了。谢谢。 - AXSM
1
@AlexSanchez 如果已经安装了Git,但在终端中输入git却无法识别,您可能需要找到git命令的安装位置,并将其添加到路径中。 - songyy
GitHub通常被称为代码库或代码本身的安装位置。Git通常被称为用于与托管在GitHub上的代码库交互的命令行实用程序。此外,GitHub最近发布了一个图形化桌面应用程序,用于与代码库交互,不需要在命令行中使用“git”命令。 - fIwJlxSzApHEZIl
请注意,截至2022年,由于安全原因(具体来说是因为它未加密),GitHub已禁用了git://协议访问,因此此方法不再可行。 - Austin Hemmelgarn

23

这个问题有点误导人。实际上并不存在一个"只读副本"的git仓库。你可以使用以下命令克隆一个已有的仓库:

git clone git://example.com/path/to/repo.git

但是与Subversion不同,Git中的每个“复制”本身都是一个全新的仓库。由于您可以向自己的仓库提交代码,因此它在这个意义上肯定不是只读的。


1
我只是引用自Github(http://github.com/Fudge/gltail),其中指定引用git:为“HTTP只读”。 - Mark Harrison
13
这意味着该存储库的HTTP协议仅配置为允许检出和拉取操作,而不允许推送操作。 - Sean

10

我没有找到真正的“只读副本”,但是根据您的需要,您可以通过以下方式来实现:

1)git clone --depth 1 git://github.com/Fudge/gltail.git
解释:因为您要求一份副本,可能不会对该副本的完整历史记录感兴趣。
--depth 1选项将下载限制为默认分支的最后一个版本,并且可以大大减少要检索的数据量。

2)如果您不想更新副本,则可以删除副本根目录下的.git目录:这将切断与原始存储库的链接。

否则,如果您的需求是确保您永远不会修改原始存储库,则必须通过您对该原始存储库的访问权限进行管理。


0

我以前也遇到过这种情况,其中“只读”副本是部署副本而不是开发副本。除了使用--depth 1之外,我们还使用了部署密钥--但如果您无法这样做,那么您应该能够为此创建一个用户,该用户没有对存储库的写访问权限,并通过unix权限阻止其他用户对该用户目录的写访问。对于需要快速解决方案的小团队,这可能有效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接