我在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

当前回答

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

commit dj374
made changes

commit y4746
made changes

commit k73ud
made changes

commit oldestCommit
made changes

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

git diff k73ud oldestCommit

其他回答

 1. git diff <commit-id> <commit-id>
 2. git diff HEAD^ HEAD     -(HEAD = current branch’s tip),( HEAD^ = version before the last commit)
 3. git diff HEAD^ HEAD — ./file     (comparison to specified file)
 4. git diff HEAD~5 HEAD           - (HEAD~5 refers to the last 5 commits.)

接受的答案很好。

只是把它放在这里,所以它很容易理解和将来尝试

git diff c1...c2 > mypatch_1.patch  
git diff c1..c2  > mypatch_2.patch  
git diff c1^..c2 > mypatch_3.patch  

对于上述所有命令,我都得到了相同的差异。

以上有助于 1. 看到commit c1和另一个commit c2之间的差异 2. 还可以制作一个显示diff的补丁文件,并可用于将更改应用到另一个分支

如果它没有正确地显示差异 那么c和c可能会被误解 所以在提交前将它们调整为a,比如c1到c0,或者在提交后将它们调整为1,比如c2到c3

使用gitk查看提交的sha,前8个字符足够使用它们作为c0, c1, c2或c3。你还可以看到Gitlab > Repository > commit的提交id,等等。

希望这能有所帮助。

看看两者之间的区别:

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

% git diff

暂存区和最新提交:

% git diff --staged

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

% git diff 4ac0a6733

提交4ac0a6733和最新的提交:

% git diff 4ac0a6733 HEAD

提交4ac0a6733和提交826793951

% git diff 4ac0a6733 826793951

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

Try

git diff k73ud^..dj374

确保将k73ud的所有变化都包含在结果差异中。

Git diff比较两个端点(而不是提交范围)。 因为OP想要看到k73ud引入的变化,他/她需要区分k73ud的第一个父提交:k73ud^(或k73ud^1或k73ud~)。

这样,差异结果将包括自k73ud父节点以来的更改(意味着包括来自k73ud本身的更改),而不是自k73ud以来引入的更改(直到dj374)。

你也可以试试:

git diff oldCommit..newCommit
git diff k73ud..dj374 

And(1个空格,不是更多):

git diff oldCommit newCommit
git diff k73ud dj374

如果你只需要获取文件名(例如手动复制修补它们):

git diff k73ud dj374 --name-only

你可以将更改应用到另一个分支:

git diff k73ud dj374 > my.patch
git apply my.patch

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

commit dj374
made changes

commit y4746
made changes

commit k73ud
made changes

commit oldestCommit
made changes

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

git diff k73ud oldestCommit