2012-03-05 85 views
7

根据this thread,排除在Git的sparse-checkout feature应该被实施。是吗?Git稀疏结账排除

假设我有以下结构:

papers/ 
papers/... 
presentations/ 
presentations/heavy_presentation 
presentations/... 

现在我想排除结账presentations/heavy_presentation,而留在结账休息。我还没有设法让这个运行。什么是正确的语法?

回答

4

我本来期望类似下面的工作:

/* 
!presentations/heavy_presentation 

但事实并非如此。我也尝试了许多其他组合。我认为,排除不正确实施,大约有它(仍然)错误

喜欢的东西:

presentations/* 
!presentations/heavy_presentation 

做的工作,虽然,你会得到的演示没有heavy_presentation文件夹中。

因此,解决方法是明确包含所有其他内容。

+0

谢谢,确认。我编辑了您的帖子,添加了另一个无法使用的示例。 – krlmlr 2012-03-07 14:26:40

3

我有同样的问题。我喜欢的东西固定它:

!presentations/heavy_presentation 
presentations/* 

我如何理解它的工作原理: 它读取的规则文件规则。如果包含了某些内容,它将包含包含该单词的所有路径,并且直到稀疏结帐结束时它不再更改其状态。如果您在包含之前添加排除规则,我认为它会首先删除文件,并将所有标记为包含。

我不完全确定,这是我根据自己的经验假定的,一直在为我工作。我希望它能帮助别人。

3

可悲的是上面没有为我工作,所以我花了很长时间尝试sparse-checkout文件的不同组合。

在我的情况下,我想用IntelliJ IDEA配置跳过文件夹。

这里是我做过什么:


运行git clone https://github.com/myaccount/myrepo.git --no-checkout

运行git config core.sparsecheckout true

创建.git\info\sparse-checkout与以下内容

!.idea/* 
!.idea_modules/* 
/* 

运行 'git的结帐 - ' 来获得全部文件。


让它工作的关键是在文件夹名后加/*

我有git 1.9