gpt4 book ai didi

git - 为什么我不应该使用这个瓷器 Git 命令来判断我的存储库是否有任何更改?

转载 作者:行者123 更新时间:2023-12-05 02:17:45 24 4
gpt4 key购买 nike

我已经为我的应用开发了一个更新程序,这样几乎没有编码技能的人就可以在他们自己的机器上安装、运行和更新应用。

这是为 Windows 命令提示符编写的更新程序示例:

@echo off
for /f %%i in ('call git status --porcelain') do set stash=%%i
if not [%stash%] == [] (
echo Stashing local changes...
call git add .
call git stash -q
)
echo Updating App...
call git pull origin master
if not [%stash%] == [] (
echo Restoring local changes...
call git stash apply -q
)
echo Updating Dependencies...
call npm update
echo Done
pause

如您所见,我正在调用 git status --porcelain 来判断应用程序是否有需要在 pull 远程 master 分支之前 stash 的本地更改。

如果工作目录是干净的,此命令将返回nothing,但如果有本地更改、跟踪或其他方式,则始终返回something

我从其他 SO 帖子中了解到,在 git 中使用 porcelain 命令进行管道工作是不好的,但在这种情况下,它对我来说效果很好,我不明白为什么 git status --porcelain 命令会在有干净的工作目录时返回东西

所以我的问题是:在这个特定的用例中使用瓷器是错误的吗?如果是这样,为什么?

奖励:有什么更好的方法来解决这个问题?

最佳答案

git status --porcelain 不是 porcelain 命令。该选项的名称具有误导性,但它实际上意味着“提供易于解析和稳定的输出,适合在瓷器脚本中使用”。因此,--porcelain 的意思是“充当管道命令”。

正如在另一个答案中已经说过的那样,您所做的没有任何问题,--porcelain 应该按照您的方式使用。

关于git - 为什么我不应该使用这个瓷器 Git 命令来判断我的存储库是否有任何更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47235361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com