我在Ubuntu 10.04 (Lucid Lynx)上使用Git。

我已经向我的主人许下了一些承诺。

但是,我想知道这些提交之间的区别。它们都在我的主分支上。

例如:

commit dj374
made changes

commit y4746
made changes

commit k73ud
made changes

我想知道k73ud和dj374的区别。然而,当我执行以下操作时,我无法看到我在k73ud中所做的更改。

git diff k73ud..dj374 > master.patch

当前回答

我总是喜欢使用命令行和用户友好的工具(GUI)在我的手中。两全其美。下面是我如何比较Git中的两次提交。

您可以显示两次提交之间的差异,如下所示。

在文本编辑器中编辑git配置文件:

git config --global -e 

在Git配置文件中设置一个合适的diff工具(用户友好),就像Windows中的Meld一样:

[difftool "meld"]
cmd = "C:/Program Files (x86)/Meld/Meld.exe" "LOCAL\" \"REMOTE" --label "DIFF (ORIGINAL MY)"
prompt = false
path = C:\Program Files (x86)\Meld\Meld.exe

可以使用Chocolatey从命令行安装Meld:

choco install meld

让我们定义一个shell函数来帮助我们比较TEXT EDITOR中[alias]下的两个sha-s(提交):

[alias]
showchangesbetween = "!w() { git difftool \"$1\" \"$2\" --dir-diff --ignore-all-space; }; w"

要在Meld(或其他你喜欢的diff工具)的帮助下比较提交,只需在命令行输入:

git showchangesbetween somesha123 somesha456

提交sha-s是很容易看到的输入

 git log 

为例。

其他回答

要查看两个不同提交(我们称它们为a和b)之间的差异,请使用

git diff a..b

注意,a和b的差值与b和a的差值相反。

要查看上次提交的更改和尚未提交的更改之间的差异,请使用

git diff

如果您希望以后能够查看差异,可以将其保存在文件中。

git diff a..b > ../project.diff

看看两者之间的区别:

您的工作副本和暂存区域:

% git diff

暂存区和最新提交:

% git diff --staged

你的工作副本并提交4ac0a6733:

% git diff 4ac0a6733

提交4ac0a6733和最新的提交:

% git diff 4ac0a6733 HEAD

提交4ac0a6733和提交826793951

% git diff 4ac0a6733 826793951

有关更多解释,请参阅官方文档。

对于最后两次提交

git diff HEAD~1 HEAD

通过扩展来比较2个提交,例如

git diff HEAD~6 HEAD~3

假设你在底部(最老的)还有一个提交,那么这就变得很简单了:

commit dj374
made changes

commit y4746
made changes

commit k73ud
made changes

commit oldestCommit
made changes

现在,使用下面的方法将很容易达到目的。

git diff k73ud oldestCommit

我总是喜欢使用命令行和用户友好的工具(GUI)在我的手中。两全其美。下面是我如何比较Git中的两次提交。

您可以显示两次提交之间的差异,如下所示。

在文本编辑器中编辑git配置文件:

git config --global -e 

在Git配置文件中设置一个合适的diff工具(用户友好),就像Windows中的Meld一样:

[difftool "meld"]
cmd = "C:/Program Files (x86)/Meld/Meld.exe" "LOCAL\" \"REMOTE" --label "DIFF (ORIGINAL MY)"
prompt = false
path = C:\Program Files (x86)\Meld\Meld.exe

可以使用Chocolatey从命令行安装Meld:

choco install meld

让我们定义一个shell函数来帮助我们比较TEXT EDITOR中[alias]下的两个sha-s(提交):

[alias]
showchangesbetween = "!w() { git difftool \"$1\" \"$2\" --dir-diff --ignore-all-space; }; w"

要在Meld(或其他你喜欢的diff工具)的帮助下比较提交,只需在命令行输入:

git showchangesbetween somesha123 somesha456

提交sha-s是很容易看到的输入

 git log 

为例。