这可能是一个非常基本的问题,尽管我能找到的所有回答都是“安装git”或“在git目录中”。“据我所知,这两个问题都已经解决了,但我的问题仍然存在。虽然解决方案可以通过取消没有输入的默认行为来解决,但我很好奇是什么模糊的(或基本的)行为导致了这一点。
问题[Git via Batch]
假设我在“C:\RepoBase”中有一个git repo,但这是我想要默认的 main repo。在不讨论进一步功能的情况下,脚本将CD到作为输入提供的位置,或者如果没有提供输入,则CD到默认路径,然后继续获得当前头部提交的名称。
:: 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到的路径的名称而不需要再次使用条件,即使在移动到目录后可以获得目录的名称,我也会尝试设置一个变量作为路径。它确实可以CD到目录中,但是从与上面的部分相同的位置,下面的部分的git调用导致“无法识别”。“为什么?
:: 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
)
1条答案
按热度按时间omqzjyyz1#
%PATH%
是一个系统变量,用于存储Windows查找可执行文件的目录,这样您就不必总是调用所有内容的完整路径。您重写了它,因此通常不需要提供完整路径的内容现在需要完整路径。将变量名更改为其他名称,如REPO_PATH。