如何在提交之前在git中查看文件差异

这经常发生在我身上:

在一两天的时间里,我正在同时处理一些与之相关的变化,当时间到了,我最终忘记了特定文件中的变化。 (这只是个人的git回购,所以我可以在提交中有多个更新。)

有什么方法可以预览我的本地文件(即将要签入的文件)和最后一次提交文件之间的更改吗?

就像是:

git diff --changed /myfile.txt 

它会打印出如下所示的内容:

 line 23 (last commit): var = 2+2 (current): var = myfunction() + 2 line 149 (last commit): return var (current): return var / 7 

这样,我可以很快看到自从上次检入之后,在该文件中做了什么。

如果你想看看你还没有git add

 git diff myfile.txt 

或者如果您想查看已经add更改

 git diff --cached myfile.txt 
 git diff HEAD file 

将显示您从上次提交中添加到工作树中的更改。 所有的变化(上演或不演出)都会显示出来。

我认为这是保证GUI的完美用例。 – 虽然我完全理解,在命令行中也可以达到足够好的效果。

就我个人而言,我的每一个承诺,我都是从git-gui做的。 在这种情况下,如果有意义的话,我可以使用单独的hunk / lines来进行多个primefaces提交。

Gut Gui能够在格式良好的彩色界面中查看差异,相当轻松。 看起来这是你应该结帐的东西。

你有没有尝试-v (或--verbose )选项git commit ? 它在消息编辑器中添加提交的差异。

检查当地的差异:

 git diff myfile.txt 

或者你可以使用diff工具(如果你想恢复一些变化):

 git difftool myfile.txt 

要更有效地使用git difftool ,请安装并使用您喜欢的GUI工具,如Meld,DiffMerge或OpenDiff。

注意:你也可以使用. (而不是文件名)来查看当前的目录更改。

为了检查每行的更改,请使用: git blame ,它将显示在哪个提交中提交了哪一行。


要在提交之前查看实际文件(其中master是您的分支),请运行:

 git show master:path/my_file 

另一种考虑是否要比较文件和最后一个更迂腐的提交的技术:

 git diff master myfile.txt 

这种技术的优点是你也可以比较倒数第二个提交:

 git diff master^ myfile.txt 

和之前的那个:

 git diff master^^ myfile.txt 

如果您不在主分支上,也可以用'〜'代替'^'字符和'分支名'作为'主'。

转到git根目录并inputgit diff *

我发现,除了使用专用的提交GUI之外,最好的方法是使用git difftool -d – 这将在目录比较模式下打开diff工具,将HEAD与当前脏文件夹进行比较。