从私有 GitHub 存储库检出标签

Gol*_*den 3 git github git-clone git-checkout git-tag

我需要从 GitHub 克隆一个私有存储库,但我只想获得一个特定的标签(所以基本上,克隆实际上是错误的术语)。

\n\n

现在的问题是,有多种选择,但所有选择都不起作用:

\n\n
    \n
  • GitHub 提供标记版本作为存档,但无法通过curl或访问它们wget(至少我不知道如何访问)。
  • \n
  • GitHub不支持归档存储库。
  • \n
  • 我可以运行 agit clone然后运行 ​​agit checkout以获取标记指定的版本,但随后我下载的内容超出了我的需要,我处于分离头状态,所有剩余的内容都保留在磁盘上。当然,我可以手动清理它,但是 \xe2\x80\xa6 好吧,对于一项微不足道的任务来说,需要做很多工作。
  • \n
\n\n

实现我想做的事情的最佳方法是什么?

\n\n

更新

\n\n

我认为我的问题不够清楚,因此我添加了更多信息:我想要的不仅是获得由标签标记的修订版本,而且我还想删除整个历史记录。基本上,就好像 Git 从未存在过一样,我所拥有的只是我的代码的这个单一版本。有什么提示吗?

\n

abl*_*igh 5

认为你可以这样做git clone --single-branch

\n\n
\n
\n --[no-]single-branch\n 仅克隆通向单个分支尖端的历史记录,\n 由 --branch 选项指定或主分支远程\xe2\x80\x99s HEAD\n点于. 使用 --depth 选项创建浅克隆时,这是默认值,除非指定 --no-single-branch 来获取所有分支尖端附近的历史记录。进一步提取到结果存储库将仅更新此选项用于初始克隆的分支的远程跟踪分支。如果在创建 --single-branch 克隆时远程的 HEAD 未指向任何分支,则不会创建远程跟踪分支。\n
\n
\n\n

请注意,这表示您需要使用 指定分支--branch,而不是标记。然而,文档--branch说:

\n\n
\n
\n --branch , -b \n 不要将新创建的 HEAD 指向克隆存储库\xe2\x80\x99s HEAD 所指向的分支,而是指向分支。在非裸存储库中,这是将被签出的分支。\n --branch 还可以在结果存储库中的该提交处获取标签并分离 HEAD。\n
\n
\n\n

最后一句说你可以--branch与标签一起使用。我唯一不确定的是您是否可以使用--single-branch标签并将其传递给--branch. 我想你必须尝试一下才能确认。或者,您必须在远程存储库中创建一个分支而不是标签。

\n\n

更新

\n\n

你现在说你还想毁掉整个历史。之后再执行此操作。

\n\n

两种方式:

\n\n

生活危险:

\n\n
git clean -xdf  # Clean out everything not in git\nrm -rf .git     # remove git\ngit init .      # put it back\ngit add .       # Add all the files\ngit commit -a -m "Eternal sunshine of the spotless mind"\n
Run Code Online (Sandbox Code Playgroud)\n\n

生活的危险性较小

\n\n
git rebase --root -i # needs recent version of git\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后更改每一行以压缩s到原始提交。

\n\n

另请参阅如何将所有 git 提交压缩为一个?

\n