带有文字与变量的 cd 导致 git 可发现与否

cd with a literal vs a variable leads to git either being discoverable or not

这可能是一个非常基本的问题,尽管我能找到的所有答案都是 "install git" 或 "be in a git directory." 据我所知,这两个问题都已经解决了,但我的问题仍然存在。尽管可以通过取消没有输入的默认行为来轻松解决该解决方案,但我很好奇是什么模糊(或基本)行为导致了这种情况。

问题[Git通过批处理]

假设我在 "C:\RepoBase" 有一个 git 存储库,还有其他可能的存储库,但这是我想默认使用的 main 存储库。在不讨论更多功能的情况下,脚本将 CD 到作为输入提供的位置或如果未提供输入则到默认路径,然后继续获取当前 head 提交的名称。

:: Go to the repo in question
if [%1]==[] (
    cd C:\RepoBase
) else (
    cd %1
)
:: Get name of current branch
FOR /F "tokens=*" %%g IN (
    'call git rev-parse --abbrev-ref HEAD'
) do (
    SET CurrentBranch=%%g
)

此解决方案有效。但是,如果我想获得使用我稍后进入的路径名称的无关紧要的好处,而无需再次使用条件,即使在进入目录后可以获得目录名称,我尝试设置一个变量用作路径。它确实 CD 进入目录很好,但是从与上面部分相同的位置,下面部分的 git 调用导致 "not recognized." Why?

:: Go to the repo in question
SET PATH=%1
if [%1]==[] (
    SET PATH=C:\RepoBase
) 
cd "%PATH%"
:: Get name of current branch
FOR /F "tokens=*" %%g IN (
    'call git rev-parse --abbrev-ref HEAD'
) do (
    SET CurrentBranch=%%g
)

%PATH% 是一个系统变量,用于存储 Windows 查找可执行文件的目录,这样您就不必总是调用所有内容的完整路径。你把它改写了,所以你通常不需要提供完整路径的东西现在需要完整路径。

将您的变量名称更改为其他名称,例如 REPO_PATH。