克隆github项目的一部分

时间:2009-10-24 13:35:38

标签: git github tortoisegit

  

可能重复:
  Is there any way to clone a git repository’s sub-directory only?

我正在尝试克隆github项目的一部分但我只能获得根文件夹。 这是我第一次尝试使用github并且我刚刚安装了tortoisegit,我习惯了svn和cvs,你可以只拿一个你想要签出的文件夹,但似乎git只在根文件夹中有一个.git文件所以即时通讯不知道该怎么办。

3 个答案:

答案 0 :(得分:8)

有子树合并。

但这是一个更简单但更局部的解决方案,可能足以满足您的需求。只需分叉并定期合并

  1. Fork(克隆)存储库
  2. 删除不需要的部分,并将子文件夹移动到您需要的位置
  3. 提交
  4. 将来,当你想要与上游Git代码同步备份时,只需将它与你的fork合并即可。您保存的文件将与来自上游的文件同步备份,您可能需要执行一些小清理工作,这些清理工作很容易从git status中看到。

答案 1 :(得分:7)

在Git社区,您想要的是“部分结账”。它目前在Git中不受支持,但它偶尔会在邮件列表中出现。 Git拥有支持部分结账所需的内部部件,但没有简单的方法可以将它们作为用户使用。我猜想Git最终能够进行部分检查,但可能会有一段时间才发生。

除了jhs's answers(子树合并; rm,mv,commit,merge)之外,还有a third-party ‘subtree’ command可能有助于更轻松地使用部分检出。虽然这不是它的主要目标,但是如何使用它来处理部分结账并不明显。如果你已经足够了解Git,你可以解决它,但如果你是Git的新手,这个子树命令可能会相当不透明。

最后,如果您只想下载最新文件,则可以use git archive to download a tar file of a specific branch or tag (or any commit-ish)。这可能不适用于GitHub(它取决于服务器配置),我没有检查。即使它不能直接工作,你也可以克隆到你自己的'裸',镜像仓库,然后从中拉出(子树)档案。

答案 2 :(得分:-1)

这不是你在git中做的事情。请记住,您正在使用DVCS,因此您需要提取整个存储库历史记录 - 在您提交的目录之外更改文件的提交应该发生什么?

如果一个项目足够大,那么你所克隆的任何repo的维护者应该使用子模块来划分这些部分,这样开发人员只能拉下他们想要处理的区域。

Git(嗯,一般来说,DVCS)不是为最终用户设计的,而是为开发人员设计的。我发现git(特别是与github结合使用)对编码非常有帮助。如果github上有一个我希望贡献的项目,我只需要分叉,下拉,hackhackhack,向上推,发送拉请求,轻松,而不是结账,黑客攻击,创建差异,试图找到通过电子邮件发送到哪里,并希望在开发人员将其合并之前不会破坏差异。

作为一个整体,Git肯定比svn更复杂,但那是因为编码是一个复杂的过程。集中式VCS工作流对我来说非常痛苦,因为我是在DVCS上长大的,而且我不允许做我以前做过的各种事情。所以,是的,如果你做同样的事情,使用git vs svn将会更复杂,但优点是所以 很多你可以做更多事情做。 Git是为Linux内核开发而开发的,它显示了。