首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git中p4 sync -p ...@Changelist的等价性

Git中p4 sync -p ...@Changelist的等价性
EN

Stack Overflow用户
提问于 2011-02-16 05:02:40
回答 2查看 2.2K关注 0票数 1

在Perforce中,您实际上可以创建一个客户端规范(工作区),并在同步Perforce代码时使用"-p“选项。这种方式不会接触Perforce服务器中的文件表,并使同步速度更快。它基本上是从Perforce服务器复制和粘贴文件。

我们正在Git端尝试这样的操作,但是找不到这个Perforce命令的精确副本。

有没有等价物呢?

我知道git reset --hard <commit>可以工作,但前提是您已经使用了git clone并获得了文件的本地副本。在我们的例子中,假设我们从未在本地机器上运行过git clone

我之所以在这种情况下问这个问题,是因为我正在做SCM release build,来自Git的源代码需要同步到特定SHA的构建机器上,但在过去并没有运行过git clone

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2011-02-16 05:25:01

您可以将git-daemon配置为允许"upload- archive“服务(参见git-daemon手册页),这允许客户端只需使用git archive --remote命令从git存储库请求特定快照的归档,而不必下载整个数据库。

例如,这将从远程服务器下载某个名为"cmstool“的1.0.0版本项目的快照:

代码语言:javascript
复制
git archive --format=tar \
            --prefix=cmstool-1.0.0/ \
            --remote=git://git/cmstool.git v1.0.0 | tar xf -
票数 4
EN

Stack Overflow用户

发布于 2011-02-16 05:24:24

git并不是为了获取特定版本的文件而设计的,而是为了获取历史记录。当需要更新时,先做git clonegit fetch真的有问题吗?更新使用差异,因此可以比复制所有文件快得多,并且git存储库通常不会比当前状态大很多。

也就是说,有几种方法可以不复制所有的历史:

  1. git clone --depth 1将只获取最近的历史记录,但它仍然获取所有分支。它也不是一个非常有用的克隆,因为许多常见的操作都不会工作。在您的用例中,这可能不是问题。
  2. ,您可以设置一个临时分支,其中只有一个commit具有您想要复制的状态。然后客户端执行git init; git remote add -t <branch> origin <url>; git fetch origin/branch; git checkout origin/branch
  3. git archive可以创建快照,该快照可以作为单独的文件下载,然后提取。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5009462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档