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

时间:2015-05-04 05:53:51

标签: git git-diff

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

Copyright 2014 MyCompany. All Rights Reserved.

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

Copyright 2015 MyCompany. All Rights Reserved.

然后上传文件

git add LICENSE.txt

为了分散注意力,我对LICENSE.txt做了另一个更改,以反映另一个组织分享版权。

Copyright 2015 MyCompany and Affiliates. All Rights Reserved.
Copyright 2015 Other Company. All Rights Reserved.

我可以通过运行

来查看我的工作副本和分阶段副本之间的区别
git diff 

我可以通过运行

来查看暂存副本和已提交副本之间的区别
git diff --cached

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

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

我正在Windows Server 2012 R2上运行git 1.9.5。

2 个答案:

答案 0 :(得分:25)

  

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

那仍然是git diff

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

然后它将是git diff HEAD。)

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

365git: Getting a diff between the working tree and other commits)功能

如果您正在寻找与git diffdiff --cached不同的内容,那么您需要:

git diff HEAD

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

答案 1 :(得分:5)

  • git diff -比较工作区域以编制索引。
  • git diff --staged -比较阶段与存储库。
  • git diff HEAD -比较工作区与存储库

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

enter image description here

现在您可以清楚地看到它的工作原理。很酷吧?