有没有人知道一个git管道(绝对不是瓷器)的方法来确定是否:
自上次提交以来,repo中有编辑,以及
当地HEAD是否领先于原产地/ HEAD
我希望以编程方式确定这个,因此不想用瓷器和各种sed-fu来解决这个问题.
更新:如下面提到的toupeira,您可以使用--porcelain
的选项git的状态(因为犯6f15787,2009年9月,git的1.7.0).
我在答案中提到" 瓷器在Git中的含义是什么意思? ":
也许
--porcelain
这里的意思是"产生适合瓷器脚本消费的输出"
但是,这不会显示前面/后面的信息:请参阅" 添加到"git status --porcelain"以使其行为类似于"git status"? ":为此,您仍需要使用其他命令:请参阅" 如何知道git存储库是否存在未与服务器同步的更改? "
初步答复2009年3月
在瓷器命令中,a:
$ git diff HEAD
为您提供自上次提交以来的更改(如果您运行"git commit -a",您将提交的内容).
管道命令中可能的等价物是:
$ git ls-files -m
列出所有修改过的(工作目录或索引)文件
如果通过克隆其他人的存储库来创建存储库,则远程"主"分支将复制到名为"origin"的本地分支.您将获得自己的"主"分支,该分支与远程存储库无关.
总有一个当前的头,称为HEAD.(这实际上是一个符号链接,.git/HEAD,到refs/heads/master这样的文件.)
运行"git status"并分析输出:
# On branch master # Your branch is ahead of 'origin/master' by 11 commits. #
在SO问题中的更多细节" 为什么Git告诉我"你的分支在11次提交之前领先于'origin/master'."我如何让它停止? "
在管道命令中可能等效:
* git-for-each-ref
列出所有提交,但也需要分析输出...
同样,git ls-files可用于产生与git状态相同的结果.
git ls-files --exclude-per-directory=.gitignore --exclude-from=.git/info/exclude \ --others \ --modified \ -t