从存储库中删除特定的文件夹

时间:2018-08-15 17:00:14

标签: git tfs

我有一个存储库,该存储库是我将从TFS本地克隆的,将要推送到我们的新VSTS实例。

像这样的文件夹结构;

\A\AA1234\
\A\AA1235\
\A\AA1236\
\A\AAB237\
\A\AAB238\
\A\AAB239\
\B\BA1234\
\B\BA1235\
\B\BAG236\
\B\BAG237\
\B\BAG238\
\C\...
...

我想删除所有格式为2个字母和数字的项目,并保留3个字母和数字的项目(下面的正则表达式)。

我正在使用以下命令,我发现here删除了单个文件夹;

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch -r FOLDERTOREMOVE" --prune-empty --tag-name-filter cat -- --all 

问题是,这似乎不适用于子文件夹。我可以将上面的“ FOLDERTOREMOVE”替换为“ A”,它会起作用(我已经用较小的测试存储库对其进行了测试)。但是看来此命令仅适用于顶级文件夹。我尝试了以下方法但没有成功;

AA1234
\AA1234
\A\AA1234
A\AA1234

是否有办法使此命令适用于子文件夹?然后,我可以为要删除的所有文件夹创建一个批处理文件来运行。

选项2涉及git push -u origin master,以某种方式指定不包括文件夹列表/正则表达式。

选项3,我使用git-tfs从TFS克隆。我尝试了一个--ignore-regex命令(下),但它似乎仍然无法执行所有操作。我愿意重新运行克隆,只要我能将其拉出所需的文件夹即可。

git-tfs clone --ignore-regex="\/[a-zA-Z]{1}\/[a-zA-Z]{2}\d" http://tfs:1234/MyTFS "$/MyTFSPath" --branches=none

REGEX

\\.\\[a-zA-Z]{3}.*?\\
\\.\\[a-zA-Z]{2}[^a-zA-Z].*?\\

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

相信我发现regex的问题在我从TFS的最初克隆中不起作用。看来GIT TFS使用的正则表达式风格与我预期的不同。

我正在使用;

doctype html
html(lang='en')
  head
    meta(charset='UTF-8') rel='stylesheet')
  body
    .container
      p The mysterious array should be here -> #{map1}

这本来应该是

git-tfs clone --ignore-regex="\/[a-zA-Z]{1}\/[a-zA-Z]{2}\d" http://tfs:1234/MyTFS "$/MyTFSPath" --branches=none

请注意,不需要像我期望的那样用'\'对'/'进行转义。然后从我的测试中,此正则表达式可以排除您不希望包含在克隆中的文件/文件夹。