我有一个存储库,该存储库是我将从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].*?\\
任何帮助将不胜感激。
答案 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
请注意,不需要像我期望的那样用'\'对'/'进行转义。然后从我的测试中,此正则表达式可以排除您不希望包含在克隆中的文件/文件夹。