如何使用git比较文件的工作副本,登台副本和提交的副本

blo*_*aak 10 git git-diff

假设我有一个名为LICENSE.txt的存储库中的文件.内容如下:

Copyright 2014 MyCompany. All Rights Reserved.
Run Code Online (Sandbox Code Playgroud)

自2015年以来,我改变了今年的2015年:

Copyright 2015 MyCompany. All Rights Reserved.
Run Code Online (Sandbox Code Playgroud)

然后上传文件

git add LICENSE.txt
Run Code Online (Sandbox Code Playgroud)

由于分心,我对LICENSE.txt做了另一个更改,以反映另一个组织的版权.

Copyright 2015 MyCompany and Affiliates. All Rights Reserved.
Copyright 2015 Other Company. All Rights Reserved.
Run Code Online (Sandbox Code Playgroud)

通过运行,我能够看到我的工作副本和分阶段副本之间的区别

git diff 
Run Code Online (Sandbox Code Playgroud)

我可以通过运行看到分阶段副本和提交副本之间的区别

git diff --cached
Run Code Online (Sandbox Code Playgroud)

如何将承诺的副本(没有更改年份的副本)与工作副本(具有附加版权的副本)进行比较?

这纯粹是一个例子.有些情况要复杂得多,我需要将我上演的内容与我随后对文件所做的更改进行比较.比较工作副本和分阶段副本的内容将决定是否应该替换分阶段副本.

我在Windows Server 2012 R2上运行git 1.9.5.

Von*_*onC 29

如何将分阶段副本(具有年份变化的副本)与工作副本进行比较.
[...]我需要将我上演的内容与我随后对文件所做的更改进行比较

那仍然是git diff.

(由OP编辑:如何将提交的副本(具有年份更改的副本)与工作副本进行比较

那就是git diff HEAD.)

http://images.abizern.org.s3.amazonaws.com/365git/Feb11/Git%20Diff%202.png

(365git:在工作树和其他提交之间获得差异)

如果您正在寻找来自不同的东西git diffdiff --cached,留下您:

git diff HEAD
Run Code Online (Sandbox Code Playgroud)

即:已提交的版本与工作树之间的差异.

  • 您也用非常清晰的插图涵盖了我正在寻找的所有场景。感谢您抽出宝贵的时间。 (4认同)
  • 应该注意的是,如果您尚未进行任何更改,则`git diff`将显示已提交副本和工作副本之间的差异。 (2认同)
  • @bloudraak true:HEAD和index在第一个`git add`之前是相同的。 (2认同)

Pan*_*ood 7

  • git diff- 比较工作区域到索引。
  • git diff --staged-将阶段区域与存储库进行比较。
  • git diff HEAD- 比较工作区和仓库

为了说明这一点,我更改了带有“名称暂存”文本的文件,然后添加了它(git add)。之后,我再次更改了文件,现在将文本替换为“名称工作区”,然后运行以下命令:

在此处输入图片说明

现在,您可以清楚地看到它是如何工作的。很酷吧?