有没有人知道git管道(绝对不是瓷器)确定是否:
我希望以编程方式确定这一点,因此不想用瓷器和各种sed-fu来解决这个问题。
答案 0 :(得分:10)
更新:mentioned below为toupeira,您可以使用git status的--porcelain
选项(自提交6f15787,2009年9月,git 1.7.0)。
我在答案“What does the term porcelain mean in Git?”中提到:
这里
--porcelain
的意思也许是“产生适合瓷器消费的输出”
但是,这不会显示前置/后置信息:请参阅“What to add to “git status --porcelain” to make it behave like “git status”?”:为此,您仍需要使用其他命令:请参阅“{{3} }“
2009年3月的初步回答
在瓷器指挥中,a:
$ git diff HEAD
为您提供自上次提交以来的更改(如果您运行“git commit -a”,您将提交的内容)。
管道命令中可能的等价物是:
$ git ls-files -m
列出所有修改过的(工作目录或索引)文件
如果通过克隆其他人的存储库来创建存储库,则远程“master”分支将复制到名为“origin”的本地分支。您将获得自己的“主”分支,该分支与远程存储库无关。
总有一个当前头,称为HEAD。 (这实际上是一个符号链接,.git / HEAD,到refs / heads / master这样的文件。)
运行“git status”并分析输出:
# On branch master
# Your branch is ahead of 'origin/master' by 11 commits.
#
SO问题“How to know if git repository has changes that have not been synchronized with server?”
中的更多细节在管道命令中可能等效:
* git-for-each-ref
列出所有提交,但也需要分析输出......
git ls-files --exclude-per-directory=.gitignore --exclude-from=.git/info/exclude \
--others \
--modified \
-t
答案 1 :(得分:2)
git status
现在有一个--porcelain
参数用于编写脚本(以及用于机器解析的替代-z
),这比git ls-files
更好,它不显示文件已添加到索引中。