Git 如何查看上次提交和现在(在做了一些更改之后)之间的更改

Git 如何查看上次提交和现在(在做了一些更改之后)之间的更改,git,Git,与此类似,但我如何看到上次提交和当前状态之间发生了哪些变化,而当前状态会有一些变化 因此,根据相关的问题,应该是这样的 在2个不同的SHA之间: git diff --name-only SHA1 SHA2 要查看第十次提交和第五次提交(大约)之间的差异,请执行以下操作: 现在,我在当前状态和上次提交之间的尝试: git diff HEAD HEAD~1 注意我想把--仅限姓名放在外面,因为我想看看文件中发生了什么变化 git diff HEAD^ HEAD 可以使用HEAD^访问上一次提

与此类似,但我如何看到上次提交和当前状态之间发生了哪些变化,而当前状态会有一些变化

因此,根据相关的问题,应该是这样的

在2个不同的SHA之间:

git diff --name-only SHA1 SHA2
要查看第十次提交和第五次提交(大约)之间的差异,请执行以下操作:

现在,我在当前状态和上次提交之间的尝试:

git diff HEAD HEAD~1
注意我想把
--仅限姓名
放在外面,因为我想看看文件中发生了什么变化

git diff HEAD^ HEAD
可以使用HEAD^访问上一次提交,因此此命令将使您看到当前提交和上一次提交的区别

您可以使用1.8.5版本中的
git diff@~..@

。。。当前状态=进行了提交,更改了文件中的某些内容,但没有进行git添加

好的,在本例中,您希望将工作树文件与已经提交的文件进行比较。“已提交的内容”要么是
HEAD
(当前提交),要么是
HEAD^1
aka
HEAD~1
,当前提交的第一个父级

虽然有许多
git-diff
变体(
git-diff-index
git-diff-file
、和
git-diff-tree
),但最基本、最简单的变体是
git-diff
本身,这就是您在这里需要的变体

默认情况下,
git diff
将指定的提交与当前工作树进行比较。因此,如果您想查看尚未添加的内容,请添加:

git diff HEAD
这将为您提供一个正常的每日差异,显示如何将“标题的内容”更改为“工作树中当前的内容”。(您可以添加
--name only
--name status
以仅获取文件名,或文件名和状态代码,但您说需要完整的差异。)

要查看如何从
HEAD~1
更改为当前工作树,请使用
git diff HEAD~1

如果知道如何引用它们,那就太好了

实际上,基本的
git diff
命令可以完成大部分功能(其中一些功能是在git版本1.6和1.7中新添加的,但人们今天在实践中使用的最古老的git版本似乎是1.7.1左右,应该可以使用这些功能):

  • git diff
    :与工作树进行比较。当文本单词
    HEAD
    时,您将比较当前提交(而不是索引)与工作树

  • git diff
    (没有额外的标志参数):比较当前索引和工作树。这与第一个类似,但不同。特别是,一旦您
    git添加了一个文件,您将更新索引中的版本,因此现在索引版本将与工作树版本匹配,因此您将不会在
    git diff
    输出中看到它,即使它实际上尚未提交

    (当然,您可以安全地添加一些标志参数,如
    --name only
    。关键是您不能在此处添加
    --staged
    --cached
    。)

  • git diff--staged
    (也可以拼写为
    git diff--cached
    ):比较
    HEAD
    (当前提交)与索引。也就是说,在前面(无标志)
    git diff
    中看到的任何内容,都可以
    git添加到索引中以更新索引;然后您将不会在
    git diff
    中看到它,但会在
    git diff--staged
    中看到它

  • git diff
    :比较两次提交。例如,
    git diff HEAD~1 HEAD
    将一步后退提交(
    HEAD~1
    )与当前提交(
    HEAD
    )进行比较

还有更多的选择;有关更完整的列表,请参阅


(只有当数字部分不是1时,
HEAD^number
HEAD~number
之间才有显著差异。波浪形后缀语法向后移动一些第一个父级,而帽子后缀语法选择第n个父级,这实际上只意味着合并提交的任何内容。您可以省略数字并重复h在后缀处,例如,
HEAD^^^
,它的意思与
HEAD~4
的意思相同。当您刚刚返回一个时,请使用您觉得更容易键入的值:数字默认为1。)
git diff index
的树
与工作树、文件系统上的文件进行比较,并加上
--cached
的树
与索引进行比较。如果要查看文件中的差异,请按“当前状态”加上
-p

,你是指你的工作树中的文件吗?如果是,你是不是在git中添加了它们?或者你根本不是这个意思;你是指你当前的提交,即,
HEAD
?git中正确问题的关键是意识到这里有三个关注的实体:当前提交、索引和工作ee.good question.current state=进行了提交,更改了文件中的某些内容,但没有进行git添加。这就是我要说的。如果知道如何引用所有TK(例如HEAD),那将很好,但正如注释中所阐明的,希望看到上次提交和当前状态之间的区别(做了一次提交,更改了文件中的某些内容,没有做git添加)这只是git diff HEADgreat post torek,提供了很好的见解,不仅仅是回答了我的问题!
git diff HEAD