如何使用 git 比较文件的工作副本、暂存副本和已提交副本
How to compare the working copy, staging copy and committed copy of a file using git
假设我在存储库中有一个名为 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
如何比较提交的副本(没有年份变化的副本)和工作副本(具有额外版权的副本)?
这纯粹是一个例子。在一些更复杂的情况下,我需要将我已暂存的内容与我随后对文件所做的更改进行比较。比较工作副本和暂存副本的内容将决定我是否应该替换暂存副本。
我是 运行 git 1.9.5 Windows Server 2012 R2。
How do I compare the staged copy (the one with the year change) with working copy.
[...] I had the need to compare what I have staged with changes I subsequently made to the file
那仍然是 git diff
。
(由 OP 编辑:我如何比较 committed 副本(年份变化的副本)与工作副本
那就是git diff HEAD
.)
(365git: Getting a diff between the working tree and other commits)
如果您正在寻找与 git diff
和 diff --cached
不同的东西,那么您会得到:
git diff HEAD
即:已提交的版本与工作树之间的差异。
- git diff - 将工作区域与索引进行比较。
- git diff --staged - 将阶段区域与存储库进行比较。
- git diff HEAD - 将工作区域与存储库进行比较
为了说明这一点,我更改了一个带有“Name Staged”文本的文件,然后添加了它(git 添加。)。在那之后,我再次更改了文件,现在我将文本替换为“Name Working Area”,然后我 运行 以下命令:
现在,您可以清楚地看到它是如何工作的。很酷吧?
假设我在存储库中有一个名为 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
如何比较提交的副本(没有年份变化的副本)和工作副本(具有额外版权的副本)?
这纯粹是一个例子。在一些更复杂的情况下,我需要将我已暂存的内容与我随后对文件所做的更改进行比较。比较工作副本和暂存副本的内容将决定我是否应该替换暂存副本。
我是 运行 git 1.9.5 Windows Server 2012 R2。
How do I compare the staged copy (the one with the year change) with working copy.
[...] I had the need to compare what I have staged with changes I subsequently made to the file
那仍然是 git diff
。
(由 OP 编辑:我如何比较 committed 副本(年份变化的副本)与工作副本
那就是git diff HEAD
.)
(365git: Getting a diff between the working tree and other commits)
如果您正在寻找与 git diff
和 diff --cached
不同的东西,那么您会得到:
git diff HEAD
即:已提交的版本与工作树之间的差异。
- git diff - 将工作区域与索引进行比较。
- git diff --staged - 将阶段区域与存储库进行比较。
- git diff HEAD - 将工作区域与存储库进行比较
为了说明这一点,我更改了一个带有“Name Staged”文本的文件,然后添加了它(git 添加。)。在那之后,我再次更改了文件,现在我将文本替换为“Name Working Area”,然后我 运行 以下命令:
现在,您可以清楚地看到它是如何工作的。很酷吧?