在提交之间显示差异

ant*_*009 200 git git-diff

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

我已经向我的主人做了一些提交.

但是,我希望得到这些提交之间的区别.所有这些都在我的主分支上.

例如:

commit dj374
made changes

commit y4746
made changes

commit k73ud
made changes
Run Code Online (Sandbox Code Playgroud)

我想得到k73ud和dj374之间的区别.但是,当我做了以下操作时,我无法看到我所做的更改k73ud.

git diff k73ud..dj374 > master.patch
Run Code Online (Sandbox Code Playgroud)

Von*_*onC 217

尝试

git diff k73ud^..dj374
Run Code Online (Sandbox Code Playgroud)

确保包含k73ud生成的差异中的所有更改.

git diff比较两个端点(而不是提交范围).由于OP希望看到引入的更改k73ud,他/她需要区分第一个父提交k73ud:(k73ud^k73ud^1k73ud~).

这样,diff结果将包括 k73ud父项以来的更改(意味着包括k73ud自身的更改),而不是 k73ud(直到dj374)引入的更改.

你也可以尝试:

git diff oldCommit..newCommit
git diff k73ud..dj374 
Run Code Online (Sandbox Code Playgroud)

和(1个空格,不多):

git diff oldCommit newCommit
git diff k73ud dj374
Run Code Online (Sandbox Code Playgroud)

如果您只需要获取文件名(例如手动复制修补程序):

git diff k73ud dj374 --name-only
Run Code Online (Sandbox Code Playgroud)

您可以将更改应用于另一个分支:

git diff k73ud dj374 > my.patch
git apply my.patch
Run Code Online (Sandbox Code Playgroud)

  • @VonC Ubuntu 14.04.只有`git diff k73ud..dj374`才行 (5认同)
  • 你确定吗?git diff 275e8922ab4e995f47a753b88b75c3027444a54c..a8d9d944c32e945cbb9f60b3f724ecc580da86ae有效,但git diff 275e8922ab4e995f47a753b88b75c3027444a54c ^ .. a8d9d944c32e945cbb9f60b3f724ecc580da86ae收到错误消息 - "未知修订版或路径未在工作树中" (4认同)
  • @VonC在我的机器中,没有必要使用^ (4认同)

Ale*_*sha 113

要看到以下区别:

您的工作副本和临时区域:

% git diff
Run Code Online (Sandbox Code Playgroud)

暂存区域和最新提交:

% git diff --staged
Run Code Online (Sandbox Code Playgroud)

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

% git diff 4ac0a6733
Run Code Online (Sandbox Code Playgroud)

提交4ac0a6733和最新提交:

% git diff 4ac0a6733 HEAD
Run Code Online (Sandbox Code Playgroud)

提交4ac0a6733并提交826793951

% git diff 4ac0a6733 826793951
Run Code Online (Sandbox Code Playgroud)

有关更多说明,请参阅官方文档.

  • 另外,如果你真的只想在这些提交中看到一个文件的差异,`git diff {x} {y} - filename`其中`{x}`和`{y}`是给出的任何一个例子.另请参阅`git log -p`,因为有一些重叠. (7认同)

cxr*_*reg 51

如果您想查看每次提交所引入的更改,请尝试"git log -p"

  • 最有价值球员!现在我怎样才能在两个特定的哈希值之间做到这一点?并反转(从较旧的到较新的)?`git log -p --reverse old_hash..new_hash`! (3认同)

小智 10

gitk用来看看差异:

gitk k73ud..dj374
Run Code Online (Sandbox Code Playgroud)

它具有GUI模式,因此查看更容易.


小智 10

  1. gitk --all
  2. 选择第一个提交
  3. 右键单击另一个,然后选择diff→这个


Rit*_*pta 9

 1. git diff <commit-id> <commit-id>\n 2. git diff HEAD^ HEAD     -(HEAD = current branch\xe2\x80\x99s tip),( HEAD^ = version before the last commit)\n 3. git diff HEAD^ HEAD \xe2\x80\x94 ./file     (comparison to specified file)\n 4. git diff HEAD~5 HEAD           - (HEAD~5 refers to the last 5 commits.)\n
Run Code Online (Sandbox Code Playgroud)\n


Flo*_*kap 8

最简单的检查拉取后最后 2 次提交中的更改:

git diff HEAD~2 
Run Code Online (Sandbox Code Playgroud)


Ald*_*Lau 7

看到两个不同的提交之间的差别(让我们称他们ab),使用

git diff a..b
Run Code Online (Sandbox Code Playgroud)
  • 注意,之间的差a并且b是相对从ba.

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

git diff
Run Code Online (Sandbox Code Playgroud)

如果您希望以后能够恢复差异,可以将其保存在文件中.

git diff a..b > ../project.diff
Run Code Online (Sandbox Code Playgroud)