如何将devops存储库镜像到GitHub,但不包括1个文件夹

如何将devops存储库镜像到GitHub,但不包括1个文件夹,git,tfs,azure-devops,gitignore,Git,Tfs,Azure Devops,Gitignore,我有一个私有的Microsoft Azure Devops/TFS管道。该管道构建我的代码,并将其内容镜像到公共github存储库 现在,我希望管道不要镜像某些文件夹,因为我希望这些文件夹保持私有。我不能仅仅更改git忽略文件,而且我无法构建一个脚本,在将文件夹提交到github之前删除该文件夹 那么我该如何处理这类问题呢?是否有任何方法可以在不使用gitignore的情况下拉-推存储库(不包括一个特定文件夹) - task: CmdLine@2 inputs: script: 'g

我有一个私有的Microsoft Azure Devops/TFS管道。该管道构建我的代码,并将其内容镜像到公共github存储库

现在,我希望管道不要镜像某些文件夹,因为我希望这些文件夹保持私有。我不能仅仅更改git忽略文件,而且我无法构建一个脚本,在将文件夹提交到github之前删除该文件夹

那么我该如何处理这类问题呢?是否有任何方法可以在不使用gitignore的情况下拉-推存储库(不包括一个特定文件夹)

- task: CmdLine@2
  inputs:
    script: 'git pull https://$(githubpersonaltoken)@github.com/MyRepo/MyFile.git master'

- task: DeleteFiles@1
  displayName: 'Delete folder'
  inputs:
    SourceFolder:
    Contents: '.deletedFolderName*'
    RemoveSourceFolder: true


- task: CmdLine@2
  inputs:
    script: 'git push https://$(githubpersonaltoken)@github.com/MyRepo/MyFile.git head:master'
预期结果:推送任务不会镜像deletedFolderName中的更改。
结果:所有内容都被推送。

创建一个包含文件夹的新分支,删除/清除所有其他内容,然后永远不要推送此分支。有多种方法可防止意外推动分支:

创建新分支 git checkout-b分泌酱 可选-仅跟踪SecretFolder,通过.gitignore忽略所有其他内容 回显'/*'>.gitignore 回声!。git*'>>。gitignore 回声/机密文件夹'>>。gitignore 仅将标准git忽略行为应用于当前索引,而不是工作目录缓存 如果此命令不返回任何内容,请确保存在/.git/info/exclude和/或.gitignore git ls文件-z-忽略-排除标准| xargs-0 git rm-缓存 git添加* git提交-m忽略了除SecretFolder之外的所有内容 如果所讨论的文件夹现在/曾经包含在存储库中,并且该repo随后被推送到GitHub,那么现在可以通过GitHub修订历史访问该文件夹,无论该文件夹在被包括/推送时处于何种状态。您可以自己看到这一点—从GitHub repo中,单击“提交”,然后单击可能包含您的文件夹的提交旁边的<>。这允许您在提交时浏览存储库。如果这是一个问题,请参阅


对于每个分支,将需要git签出分支,然后修改/.git/info/exclude文件以匹配相应分支中出现的.gitignore文件,在不使用-all开关的情况下运行git filter branch命令,然后恢复/.git/info/exclude,为确保此过程正确应用每个分支不同的所需签名

您在哪里提交更改?你拉,删除一些东西,然后推动回购,而没有任何承诺。然而,这里有一点值得怀疑:您不想镜像的私有内容是什么?如果这是秘密,那么你解决了错误的问题。要解决的问题是在源代码管理中存储秘密,这是一种可怕的做法。