如何从GIT中的远程分支中获取一个文件夹

时间:2011-10-28 01:37:05

标签: git

我在github和几个分支机构都有一个存储库。整个回购约2演出。在转到git之前,我有一个ant脚本,可以从svn存储库中检出文件夹,构建二进制文件,然后提交回存储库。

不幸的是在切换到git后,我找不到一个简单的方法来做到这一点。每次我的ant脚本运行时,我都希望它从远程分支获取一个新的文件夹副本,并在完成一些工作后提交回来。每次运行ant脚本时,我都不想下载整个repsitory(2 GB的数据)。

以下是我的蚂蚁脚本如何使用SVN

的示例

GIT工作流程似乎是

  • GIT INIT
  • GIT CLONE http://project.branch15(2 GB)
  • 在/ subfolder /子文件夹/子文件夹
  • 中修改一些STUFF
  • COMMIT branch 15

2 个答案:

答案 0 :(得分:2)

这听起来像你在一个存储库中有太多的东西。您应该重构它以使用子模块。 *如果有一个文件夹不能独立于他们的祖先或兄弟姐妹生活,那么它就是子模块的一个很好的候选者。

Git子模块本身就是git存储库,因此可以是克隆,检出,修改并推送到独立于父存储库。

您还可以拥有子模块的层次结构。因此,在您的示例中,每个子文件夹都可以是子模块。 (但你应该注意上面的*)。

这种方法的另一个优点是你可以克隆主要仓库(可能是2GB),并假设它由一些子模块组成(比如10个~200MB),而不需要占用2GB。然后,您可以为您想要的存储库运行子模块检出。

以下是一个例子:

文件结构

  /MainApp/           
       /Utils    200MB
       /Lib    
^        /OSX    200MB
^        /WIN32  200MB
^        /WIN64  200MB  
^        /NIX    200MB 
       /Source   150MB 
                 =====
                 1.15GB

如果^文件夹都是子模块,则可以执行以下操作

$ git clone MainApp
  # Downloads the 200MB for Utils and the 150MB for Source (plus git files)
$ cd MainApp
$ git submodule update /Lib/OSX
  # Downloads the 200MB OSX folder

答案 1 :(得分:0)

你不能这样做,这不是Git的工作方式。将存储库克隆到您的计算机,进行更改,阶段和放大提交它,然后将其推回到另一个存储库。

如果你的项目是像GitHub这样支持在网站上编辑文件的服务,那么你就不需要做任何这样的事了。修改网站上的文件非常简单。

您是否考虑将该存储库拆分为许多不同的子存储库而不是具有如此大的存储库?

相关问题