繁体   English   中英

git 命令中的 Windows 命令行变量

[英]Windows command line variable in git command

为了使git remote add origin %repoWithToken%解析为预期的有效 ZE6B391A8D2C4D45902A23A8B6585703D,需要在下面的 windows 命令行命令中更改哪些特定语法?

失败的命令:

以下命令在windows-latest GitHub 运行器上的pwsh shell 中运行。

set repoWithToken="https://"$GIT_PAT"@github.com/accountName/repoName.git"
git init
git remote add origin %repoWithToken%

错误信息:

运行上述代码时,GitHub windows-latest runner 给出以下错误消息:

fatal: '%repoWithToken%' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Error: Process completed with exit code 1.

答案可以只是简单的 windows 命令行命令。 不需要任何花哨的 powershell。

此外, $GIT_PAT是正确的 GitHub 语法,尽管set repoWithToken="https://"$GIT_PAT"@github.com/accountName/repoName.git"中的连接可能需要在上面的代码中以不同方式完成. 这是从 bash 翻译的过程中。

基于Olaf的有用评论:

  • set <varName>=<valuecmd.exe中用于分配变量; 而在 PowerShell 中, setSet-Variable的内置别名,后者有非常不同的语法

    • 更重要的是,它很少需要使用,因为变量被分配为$<varName> = <value>

    • PowerShell 在设置获取变量值时使用相同的语法$<varName> 因此,在使用$repoWithToken = <value>分配给名为repoWithToken的变量之后,您还可以稍后使用$repoWithToken引用它的(相比之下, %repoWithToken%再次是cmd.exe语法)。

  • 假设GIT_PAT环境变量的名称,您必须在 PowerShell 变量中将其称为$env:GIT_PAT (具有明确的名称描述: ${env:GIT_PAT}

  • 与 Bash(以及一般与 POSIX 兼容的 shell)不同,如果第一个标记未加引号,PowerShell 仅允许您从带引号和未加引号的标记的混合中组合单个字符串。

    • 因此,像"https://"$GIT_PAT"@github.com/accountName/repoName.git"这样的东西不能用作单个字符串参数,因为它的第一个标记被引用,导致 PowerShell 将它分成两个arguments案子。

    • 由于此处需要字符串插值以将${env:GIT_PAT}替换为其值,因此只需将整个值括在"..."中,即使其成为可扩展字符串

所以:

$repoWithToken = "https://${env:GIT_PAT}@github.com/accountName/repoName.git"
git init
git remote add origin $repoWithToken

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM