【问题标题】:How to checkout from git如何从 git 结帐
【发布时间】:2011-03-24 12:00:43
【问题描述】:

到目前为止,作为项目中唯一的人,我一直在复制/粘贴我的项目文件夹并将它们重命名(Ver1、Ver2、Ver3 等)作为版本控制方案。 现在我正在尝试切换到 Git。

这就是我所做的:
我初始化了一个.git 文件夹并将第一个版本添加到Git 存储库中。 然后我将所有其他版本作为提交添加到 git 存储库并标记它们。 所以现在我在 master 分支中拥有所有版本并作为标签。

我的问题是:
我如何(我不知道 checkout 是否正确)从 Git 存储库中获取任何版本并将其放在任意文件夹中而不切换分支(或 Git 可能认为它必须执行的任何其他操作)?只是简单地从 Git 复制一个版本(任何版本)到一个文件夹,而 Git 存储库和文件夹之间没有任何连接?

【问题讨论】:

    标签: git tags


    【解决方案1】:

    通常您直接在正常工作树中检查历史版本(您可以将任何提交检出为“分离的 HEAD”/“未命名分支”)或使用 git log 间接查看历史记录(尤其是 -p 选项) ,git blame,等等。

    但是,如果你真的需要完全解压一个旧版本,你可以使用git archive 命令创建一个特定提交的tar存档1(a标签名称、分支名称(您将获得其提示提交)或提交对象 ID(即 SHA-1 哈希值)将用于指定提交)。您可以轻松地将存档通过管道传输到 tar 以将其提取到您喜欢的任何位置。

    从您的存储库目录:

    git archive --format=tar branch-or-tag-name-or-commit-id |
      (mkdir /path/to/destination && cd /path/to/destination && tar xf -)
    

    git archive 将始终适用于本地存储库。它还可以通过--remote 选项与非本地存储库(或不基于当前工作目录的本地存储库)一起使用;并非所有 Git 托管服务都允许提取档案(它们可能不想花费 CPU 时间或带宽)。


    1 实际上,您可以将git archive 与任何tree(即任何提交中表示的根目录或任何子目录)一起使用,但它最常用于分支提示、标签和提交。

    【讨论】:

    • +1 不错的答案。一些小事情 - 如果没有为 git archive 指定输出文件,tar 是默认格式,因此您不需要该参数。此外,您可以使用tar -C /path/to/destination -x as suggested here 而不是cd /path/to/destination && tar xf -
    【解决方案2】:

    做:

    git clone (path to your repo)
    

    或者如果您不想要 .git 元数据:

    git archive (branch)
    

    【讨论】:

    • 是的,但我会得到整个 repo,而不是我想要的版本/标签。目前我签出我需要的标签(这就是我标记每个提交的原因,所以我可以签出它们),将工作文件夹(包含我之后的标签)复制到其他地方,然后再次签出主文件,但我是不确定这是否是正确的方法
    • 你可以向 git archive 传递一个标签 ID,它只会检查树的标记版本。
    • 您无需标记提交即可将其签出。你可以签出提交。
    【解决方案3】:

    你的问题是:

    我怎么能(我不知道是否结帐 是正确的词)抓住任何版本 来自 GIT 存储库并将其放入 任意文件夹,无需切换 分支(或任何其他操作 GIT 可能认为它必须这样做)?

    你想使用 git checkout 命令:

    git checkout myTag1.2.3 
    git checkout asdf81274982shjsks 
    git checkout origin/develop
    

    checkout 的参数可以是分支、标签或 SHA1-hash。

    您总能获得完整的存储库。你不能结帐它的一部分。请记住,git 存储完整存储库的快照。

    【讨论】:

      猜你喜欢
      • 2012-09-06
      • 2011-04-05
      • 1970-01-01
      • 2012-12-09
      • 2011-10-22
      • 2013-05-11
      • 2012-03-02
      • 1970-01-01
      相关资源
      最近更新 更多