在Perforce中,您实际上可以创建一个clientspec(工作区),并在同步Perforce代码时使用“-p”选项。这样它就不会触及Perforce服务器中的文件表,并使同步更快。它基本上是从Perforce服务器复制和粘贴文件。
我们正在Git端尝试此类操作,但无法找到此Perforce命令的精确副本。
这是否等同?
我知道git reset --hard <commit>
会起作用,但如果您已经使用git clone
并获得了文件的本地副本,那就是这样。在我们的例子中,假设我们从未在本地计算机上运行git clone
。
我在这种情况下问,因为我正在进行SCM发布构建,而Git的源代码需要在特定的SHA下同步到构建机器,但没有git clone
运行过去。
感谢。
答案 0 :(得分:4)
您可以配置git-daemon以允许“upload-archive”服务(请参阅git-daemon联机帮助页),这允许客户端使用{来简单地从git存储库请求特定快照的存档。 {1}}命令,而不是必须下载整个数据库。
e.g。这将从版本1.0.0从远程服务器下载一个名为“cmstool”的项目的快照:
git archive --remote
答案 1 :(得分:0)
git并非旨在仅获取特定版本的文件,而是历史记录。在需要更新时首先执行git clone
和git fetch
是否真的存在问题?更新使用差异,因此可以比复制所有文件快得多,并且git存储库通常不比当前状态大得多。
尽管如此,有一些方法可以不复制所有历史记录:
git clone --depth 1
只会获取最近的历史记录,但它仍会获取所有分支。它也不是一个非常有用的克隆,因为许多常见的操作都行不通。这可能不是您的用例中的问题。git init; git remote add -t <branch> origin <url>; git fetch origin/branch; git checkout origin/branch
git archive
可以创建一个快照,可以作为单独的文件下载,然后解压缩。