我已经为我的应用程序一起攻击了一个更新程序,因此几乎没有编码技能的人可以在自己的计算机上安装,运行和更新应用程序。
以下是为Windows命令提示符编写的更新程序示例:
git status --porcelain
正如您所看到的,我正在调用git status --porcelain
来判断应用程序是否具有本地更改,这些更改需要在拉动远程主分支之前进行隐藏。
如果工作目录是干净的,则此命令将返回 nothing ,但如果存在本地更改,则会始终返回某些内容。
我从其他SO帖子中读到,使用瓷器命令在git中进行管道工作是不好的,但在这种情况下,它对我来说效果很好,我不明白为什么childrenarray
当有一个干净的工作目录时,命令将返回某些东西。
所以我的问题是:在这个特定的用例中使用瓷器是不对的?如果是这样,为什么?
奖金:什么是更好的方法来解决这个问题?
答案 0 :(得分:1)
实际上,将git status
与--porcelain
切换一起使用并没有错。此外,当您窥视文档时,您将看到您完全按照设计的方式使用命令:
以易于解析的格式为脚本提供输出。这是 类似于短输出,但在Git中保持稳定 版本,无论用户配置如何。有关详细信息,请参阅下文。
此处的另一个选择是使用-s
开关(git status -s
),它也会返回易于解析的输出,但可能无法保证在将来的版本中以相同的方式工作。
我无法以任何方式发现git status
的这种特定用法不正确。它完成了工作,它可靠且易于理解。
与瓷器等效的命令可以是例如是:
git ls-files --exclude-per-directory=.gitignore --exclude-from=.git/info/exclude --others --modified -t
但是来自git ls-files
开关上的-t
个文档:
此功能已被半弃用。出于脚本目的, git-status(1) - 瓷器和git-diff-files(1) - 名称状态差不多 永远优越 替代方案,用户应该查看git-status(1) - short或git-diff(1) - name-status以获得更加用户友好的替代方案。
所以你看到即使是git手册也建议使用git status
替代方案。
答案 1 :(得分:1)
git status --porcelain
不是瓷器命令。该选项的名称具有误导性,但它实际上意味着"提供易于解析和稳定的输出,适用于瓷器脚本"。因此,--porcelain
表示"充当管道命令"。
正如在另一个答案中已经说过的那样,你做的事情没有错,--porcelain
意味着你的使用方式。