排除git中的.svn文件夹

joh*_*nix 68 svn git

我试图排除subversion的文件夹被git跟踪.我为.git/info/exclude尝试了几种不同的设置,但它似乎不起作用.我会使用git-svn,但要求访问权限让它起作用很麻烦,所以我宁愿通过排除文件夹来解决这个问题.

我想排除".svn/entries"

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

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

Jes*_*sak 50

我想你想在你的顶级目录中使用.gitignore文件.如果您在该文件中的一行上放置".svn/entries",这将有效.您可能只需要输入".svn"而不是".svn/entries".

编辑:见评论.如果他们的文件已被git跟踪,它们将始终显示在git status.

  • 这适用于我,即使每个文件夹中都有一个.条目是否显示在`svn status`中,因为您已经要求git跟踪它们?如果你'git add`ed他们,他们会出现无论如何.只是`git rm --cached`他们你会没事的. (4认同)
  • 这不是世界上最优雅的东西,但是我使用以下方法来递归剥离.svn文件夹(根据@JesseRusak):`for for dir in $(find ./ -type d); do git rm --cached -r $ dir/.svn; 完成;` (4认同)
  • 我也尝试了这个,但这没用.问题是每个文件夹都有自己的.svn/entries. (2认同)
  • ghayes的规则很危险,如果有人放置了嵌入了命令的文件名,则可能会出现安全问题.或者它可能只是失败,因为例如文件名中有一个空格.我建议使用这个变体:`find ./ -type d -name .svn -print0 | xargs -0 git rm --cached -r` (2认同)

小智 29

这个帖子有正确的答案:

Git - 忽略特定文件夹中包含的某些文件

你真正需要的是:

.svn*
Run Code Online (Sandbox Code Playgroud)


cmc*_*nty 25

将".svn"放在一个~/.gitexcludes文件中.然后告诉git:

echo '.svn' > ~/.gitexcludes
git config --global core.excludesfile "/home/USER_NAME/.gitexcludes"
Run Code Online (Sandbox Code Playgroud)

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

  • .gitexcludes和.gitignore有什么区别? (2认同)

小智 5

以下结构和.gitignore内容为我工作

  • \ git的
  • \ .svn文件
  • \的.gitignore

.gitignore内容

.svn/
.gitignore
Run Code Online (Sandbox Code Playgroud)

  • [不要告诉Git忽略`.gitignore`!](http://stackoverflow.com/questions/767147/how-do-i-tell-git-to-ignore-gitignore) (5认同)