在git中排除.svn文件夹


68

我试图排除git跟踪Subversion的文件夹。我为.git / info / exclude尝试了几种不同的设置,但似乎不起作用。我会使用git-svn,但是请求访问权限才能使它正常工作很痛苦,所以我宁愿通过排除文件夹来解决此问题。

我想排除“ .svn /条目”

我尝试将以下行添加到.git / info / exlude:.svn条目.svn / 条目 svn

无论我尝试什么,当我运行git status时都会显示.svn条目


您的意思是请求访问以使git-svn正常工作很痛苦。git-svn只是发出svn命令,因此,如果您已经具有SVN访问权限,则可以使用git-svn,而上游的任何人都不会知道或无需更改任何内容
cpjolicoeur

可以在我的工作计算机上安装东西。缺少一个perl模块,要求管理员制作该mod只是一个痛苦……
johannix

Answers:


50

我认为您想在顶级目录中使用.gitignore文件。如果将“ .svn / entries”放在该文件中的一行上,则此方法有效。您也可以只输入“ .svn”而不是“ .svn / entries”。

编辑:查看评论。如果他们的文件已经被git跟踪,它们将始终显示在中git status


2
我也尝试过,但是没有用。问题在于每个文件夹都有自己的.svn /条目。
johannix

4
即使在每个文件夹中都存在一个文件夹,这也对我有用。条目是否svn status因为您已经要求git跟踪而显示在其中?如果您已经git add吃过它们,无论如何它们都会出现。只要git rm --cached他们,你会没事的。
杰西·鲁萨克

在那里。我首先添加了行李箱中的所有文件...好吧,杰西!
johannix

4
这不是世界上最优雅的东西,但是我使用以下内容递归剥离.svn文件夹(根据@JesseRusak):for dir in $(find ./ -type d); do git rm --cached -r $dir/.svn; done;
ghayes 2011年

2
如果有人放置了文件名并嵌入了命令,ghayes的规则很危险,并且可能是安全问题。否则可能会因为例如文件名中包含空格而失败。我建议改用这种方式: find ./ -type d -name .svn -print0 | xargs -0 git rm --cached -r
mc0e 2013年


25

将“ .svn”放入~/.gitexcludes文件中。然后告诉git:

echo '.svn' > ~/.gitexcludes
git config --global core.excludesfile "/home/USER_NAME/.gitexcludes"

(确保更改USER_NAME,使其指向您的主目录)


凯西,我真的以为那是行得通的……但是,那没有用。这真令人沮丧。
johannix

2
.gitexcludes和之间有什么区别.gitignore
Ehtesh Choudhury 2012年

1
@Shurane参见stackoverflow.com/questions/10066749/git-excludes-vs-ignores-排除项未版本化,忽略项已版本化。
本·弗林

工作了。注意:它应该是“〜/ .gitexcludes”
Yauhen


3

做什么 Casey建议,除了命名文件.gitignore,并把它放在你的混帐回购协议的根源。

我也喜欢这样做,attrib +h .gitignore这样它就不会显示在我的资源管理器窗口中。


3

如果要保留svn目录。

您可以先运行以下命令:

for dir in $(find ./ -type d -name \*.svn); do git rm --cached  -r $dir; done;

然后echo ".svn" >>.gitignore 在根目录中 运行


2

因为每个版本文件夹都有一个.svn目录,所以您必须输入:

* /。svn / *


这行不通。它会忽略src/.svncoolStuff/.svn,但不会src/main/.svn
MatrixFrog 2011年

1
对于多个文件夹,“ * / ”是必经之路!比您需要在.gitignore中添加两行:“ /.svn/ ”和“ *
/。svn

对于子文件夹排除使用:**
/。svn
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.