是否有可能做一个稀疏的结帐没有检查出整个存储库?
我正在处理一个有大量文件的存储库,需要几个小时才能完成。 我正在研究是否Git能够很好地支持这种types的存储库,因为它支持稀疏检出,但是我可以find的每个示例都会执行以下操作:
git clone <path> git config core.sparsecheckout true echo <dir> > .git/info/sparse-checkout git read-tree -m -u HEAD
这个命令序列的问题是原始的克隆也做结帐。 如果将-n添加到原始克隆命令,则读取树命令将导致以下错误:
错误:稀疏结帐离开工作目录没有条目
如何在不检出所有文件的情况下进行稀疏结帐?
尝试这个:
mkdir myrepo cd myrepo git init git config core.sparseCheckout true git remote add -f origin git://... echo "path/within_repo/to/desired_subdir/*" > .git/info/sparse-checkout git checkout [branchname] # ex: master
现在你会发现你有一个“修剪”结帐,只有path / within_repo / to / desired_subdir目前(和在该path)的文件。
请注意,在Windows命令行中,你不能引用path,即你必须改变第六个命令:
echo path/within_repo/to/desired_subdir/* > .git/info/sparse-checkout
如果你没有,你会得到在稀疏结帐文件中的报价,它不会工作
Git克隆有一个选项( --no-checkout
或-n
),可以做你想做的事情。
在您的命令列表中,只需更改:
git clone <path>
对此:
git clone --no-checkout <path>
然后,您可以使用问题中所述的稀疏结帐。
我从pavek之前发布的单行版中find了答案(谢谢!),所以我想在Linux (GIT 1.7.1)的单个回复中提供完整的答案:
1--> mkdir myrepo 2--> cd myrepo 3--> git init 4--> git config core.sparseCheckout true 5--> echo 'path/to/subdir/' > .git/info/sparse-checkout 6--> git remote add -f origin ssh://... 7--> git pull origin master
我改变了一些命令的顺序,但是这似乎没有任何影响。 关键是在步骤5 的path末尾存在斜杠“/”。
可悲的是上面没有一个为我工作,所以我花了很长时间尝试不同的sparse-checkout
文件的组合。
在我的情况下,我想用IntelliJ IDEAconfiguration跳过文件夹。
这是我做的:
运行git clone https://github.com/myaccount/myrepo.git --no-checkout
运行git config core.sparsecheckout true
用以下内容创build.git\info\sparse-checkout
!.idea/* !.idea_modules/* /*
运行'git checkout – '来获取所有文件。
使它工作的关键的事情是添加/*
文件夹的名称后。
我有git 1.9
我有一个类似的用例,除了我只想签出一个标签提交和修剪目录。 使用--depth 1
使它真的很稀疏,可以真正加快速度。
mkdir myrepo cd myrepo git init git config core.sparseCheckout true git remote add origin <url> # Note: no -f option echo "path/within_repo/to/subdir/" > .git/info/sparse-checkout git fetch --depth 1 origin tag <tagname> git checkout <tagname>
我是新来的混帐,但似乎如果我做每个目录的混帐签出然后它的作品。 此外,稀疏检出文件需要在每个目录之后都有一个尾随的斜线。 有人更多的经验,请确认这将工作。
有趣的是,如果你签出一个不在sparse-checkout文件中的目录,这似乎没有什么区别。 他们不显示在混帐状态和git读取树-m -u HEAD不会导致它被删除。 git reset –hard不会导致目录被删除。 任何更有经验的人都在意git认为哪些目录已经签出但不在稀疏签出文件中?
git 2.9(2016年6月)将--no-checkout
选项概括为git worktree add
(允许与一个回购的多个工作树一起工作的命令)
参见Ray Zhang( OneRaynyDay
)的 提交ef2a0ac (2016年3月29日) 。
Eric Sunshine( sunshineco
)和Junio C gitster
( gitster
)帮助 。
(由Junio C gitster
– gitster
合并-于2016年4月13日的gitster
承诺 )
git worktree
手册页现在包括:
--[no-]checkout:
默认情况下,
add
签出<branch>
,但是,可以使用--no-checkout
来取消签出以进行自定义, 例如configurationsparse-checkout 。
是的,稀疏检查下载整个东西从git下载文件夹。 上述方法都不适用于我。 从https://github.com/gearvrf/GearVRf-Demos只下载一个样本,这是我做的;..
-
对于Windows用户下载并安装SlikSvn_x84,将此“C:\ Program Files(x86)\ SlikSvn \ bin”添加到Path环境variables。 mac用户使用替代svn客户端。
-
使用命令行:
svn export https://github.com/foobar/Test.git/trunk/foo
注意URL格式:
基地址最后附加了https://github.com/ / trunk
例如: svn export https://github.com/gearvrf/GearVRf-Demos.git/trunk/gvr-renderableview
我希望这会帮助别人。 ref: https : //stackoverflow.com/a/18324458/5710872