2

我在 Azure DevOps 中有一个项目。我想将项目的 Git 存储库中的特定文件复制到我的 unix 机器上。我想使用命令行来实现这一点。

我尝试了以下命令

  wget -O /unix/path/to/save/file.txt "https://tfs-glo-org.visualstudio.com/team/_git/projectName?path=/fileTobeCopied&version=GBbranch"

它成功地将文件复制到 unix 框,但不仅仅是我想要的文件,它保存了整个 html 页面。

4

2 回答 2

3

这绝非易事。原始下载 url 有点复杂:

 GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}
     /items?path={path}&scopePath={scopePath}&recursionLevel={recursionLevel}
     &includeContentMetadata={includeContentMetadata}&latestProcessedChange={latestProcessedChange}
     &download={download}&$format={$format}&versionDescriptor.versionOptions={versionDescriptor.versionOptions}
     &versionDescriptor.version={versionDescriptor.version}&versionDescriptor.versionType={versionDescriptor.versionType}
     &includeContent={includeContent}&resolveLfs={resolveLfs}&api-version=5.1

对你来说最重要的是设置&download=true. 获取这些值的最简单方法是从 UI 下载文件并检查下载 url:

在此处输入图像描述

您可以从浏览器的“下载”页面获取完整网址:

在此处输入图像描述

可以在此处找到请求格式的完整文档。

为了使下载成功,您还需要传入身份验证令牌或个人访问令牌。这里解释了安全部分

最简单的选择是使用个人访问令牌

 wget --user . --password {PAT} https://dev.azure.com/....

如果未传入凭据,Azure DevOps 将改为发送错误页面内容。

于 2019-08-18T08:13:03.627 回答
1

文件存储在 Git 源代码控制中是有原因的。不要以您尝试的方式下载。

使用命令行git clone存储库并找到您要选择的文件。

https://www.atlassian.com/git/tutorials/setting-up-a-repository/git-clone

您始终可以针对特定标签提交

于 2019-08-19T06:42:49.033 回答