我正在试图弄清楚如何轻松计算未提交索引中的文件。
我试过了:
git status | grep '#' | wc -l
但是有几行以#
开头并不代表更改的文件。谁有更好的东西?想象一下git status
必须有一个标志才能做到这一点。
即使像GitX这样的工具也不容易让你选择分阶段的文件/目录,看看它们有多少。
答案 0 :(得分:61)
如果你想要一个脚本可以使用的东西:
git diff --cached --numstat | wc -l
如果你想要人类可读的东西:
git diff --cached --stat
答案 1 :(得分:19)
这对我有用:
git status | grep 'modified:' | wc -l
它返回一个数字
答案 2 :(得分:9)
答案 3 :(得分:7)
对于它的价值,我更喜欢:
pom.xml
...
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-themes</artifactId>
<version>${vaadin.version}</version>
</dependency>
<dependency>
<groupId>com.company</groupId>
<artifactId>company-vaadin-themes</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
...
UI.java
@SpringUI
@Theme("mytheme")
public class CompanyUI extends UI {
输出类似:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>company-vaadin-themes</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
<vaadin.version>7.7.3</vaadin.version>
<vaadin.theme>mytheme</vaadin.theme>
<vaadin.plugin.version>${vaadin.version}</vaadin.plugin.version>
</properties>
<repositories>
<repository>
<id>vaadin-addons</id>
<url>http://maven.vaadin.com/vaadin-addons</url>
</repository>
<repository>
<id>com-vaadin-prereleases</id>
<url>https://maven.vaadin.com/vaadin-prereleases</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-server</artifactId>
<version>${vaadin.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-themes</artifactId>
<version>${vaadin.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
<plugin>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-maven-plugin</artifactId>
<version>${vaadin.version}</version>
</plugin>
</plugins>
</build>
</project>
答案 4 :(得分:0)
也许它在9年前不可用,但是截至2019年,ls-files
比diff --stat
快得多:
git ls-files --cached | wc -l
答案 5 :(得分:0)
下面应该涵盖所有情况(新的,修改的,删除的甚至是未跟踪的),它返回一个数字。
(git status -s |select-string -Pattern "^\s*[A|\?|D|M]" -AllMatches).Matches.Count
答案 6 :(得分:0)
对于正在寻找PowerShell解决方案的任何人:
(git diff --cached --numstat | Measure-Object -Line).Lines
答案 7 :(得分:0)
这有很多答案...但是最好的命令imo(它不需要任何管道,并且是纯本地git命令)仅是以下内容。请注意,这包括删除,修改和添加的文件:
git diff --cached --shortstat
输出只有一行:
X files changed, Y insertions(+), Z deletions(-)
如果未进行任何更改,则不打印任何内容(甚至不打印新的空行)。
对于未进行暂存的更改(仅省略--cached
标志),如何获得相同的结果也很明显:
git diff --shortstat