git diff 命令

git diff 是一个多功能的 Git 命令,用于比较已提交的更改。
借助此命令,我们可以获取两个输入数据集并输出它们之间的修改。
执行时,此命令会在 Git 数据源上运行 diff 函数。
通常,它与 git status 和 git log 命令结合使用来分析 git 存储库的状态。

git status 命令

git status 命令用于展示工作目录和暂存区的状态。
它允许查看暂存更改和 Git 未跟踪的文件。

状态输出不显示有关已提交项目历史的任何信息。
为此,建议使用 git log 命令。

git status 命令只是显示 git add 和 git commit 命令发生了什么。

发现未提交的更改

在本节中,我们将展示如何发现工作目录中未提交的更改。
下面,我们考虑几种方便的方法来做到这一点。

使用 git diff-index 命令

我们可以通过以下方式使用 git diff-index 命令获取未提交的更改:

git diff-index HEAD -

git diff-index HEAD 命令将在没有提交的分支上失败,例如新创建的存储库。

这是一个 bash 脚本的小示例,用于确定是否存在未提交的更改。

set -e
  echo -n "Checking if there are uncommited changes... "
  trap 'echo -e "3[0;31mCHANGED3[0m"' ERR
  git diff-index --quiet HEAD -
  trap - ERR
  echo -e "3[0;32mUNCHANGED3[0m"

使用 git status 命令

此外,我们可以使用带有 --porcelain 选项的 git status 命令来获得更清晰的输出:

git status --porcelain

--porcelain 标志以易于解析的格式为脚本提供输出,类似于短输出。
但是,无论用户配置如何,它都将在 Git 版本中保持稳定。

使用 git diff 命令

此外,我们可以使用带有 --name-only 属性的 git diff 命令来列出更改的文件:

git diff --name-only

git diff-index 命令

git diff-index 命令用于比较在树对象内检测到的 blob 的内容模式与工作树内的匹配跟踪文件,或者索引内的匹配路径。
在存在 <paths> 参数的情况下,只比较匹配模式的路径。
在其他情况下,会比较所有跟踪的文件。

如何以编程方式确定 Git 中是否存在未提交的更改

有时,需要在脚本中获取工作目录的未提交更改。
git status 命令输出了太多可能不需要的信息。

因此,本文的目的是检查是否存在未提交的更改。

日期:2020-06-02 22:16:41 来源:oir作者:oir