【发布时间】:2021-07-20 04:46:52
【问题描述】:
所以我在 Azure DevOps 中有一个 Git 存储库,其 URL 类似于
https://[$server]/tfs/[$company]/[$project]/_git/[$repoName]
我可以通过附加如下内容来访问该存储库中的单个文件:
?path=/[$folder]/[$fileName]
我正在尝试使用 Powershell 将特定文件从此 repo 下载到我计算机上的相应位置和文件名,如下所示:
$sourcePath = "https://[$server]/tfs/[$company]/[$project]/_git/[$repoName]?path=/[$folder]/[$fileName]&download=true"
$filePath = "C:\Documents\[$folder]\[$fileName]"
Invoke-RestMethod -Uri $sourcePath -Method Get -Headers @{Authorization=("Basic {0}" -f [$AuthInfo])} -OutFile $filePath
这样做不是用 repo 中的文件替换本地文件,而是用响应正文的内容替换本地文件的内容。我觉得奇怪的是,我一直在做的所有谷歌搜索都说要这样做,尽管 Microsoft article on Invoke-RestMethod 实际上解释说这是 -OutFile 所做的。
注意我也试过Invoke-WebRequest....同样的事情。
那么如何将实际文件从 repo 下载到我想要的本地目标(或将本地目标文件的内容替换为 repo 文件的内容)?
另外,有没有办法指定从哪个分支获取文件?也许我也应该以某种方式使用 Git powershell 命令?我所做的关于从 git repo 下载的所有其他谷歌搜索都提供了关于 GitHub 的结果。
谢谢!
【问题讨论】:
-
这是 git 解决方案,但我也很想看看如何在 powershell 中执行它-stackoverflow.com/questions/28375418/…
-
是的,@OwlsSleeping - 这不仅是 Git 的方式,而且看起来是将文件下载到克隆存储库的位置,而不是指定下载位置(我需要能够做到)。谢谢!
-
这不是真正的 Git 东西。 Git 是关于存储库中包含的提交的全部内容。提交 hold 文件的事实(每个提交部分是每个文件的存档)在这里很有用,但是 get 一个文件 from 的方法具有 Git 存储库的服务器上的提交取决于该服务器。这就是为什么你找到了所有那些 GitHub 特定的答案。您需要 Azure 特定的答案。
标签: git powershell azure-devops