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

时间:2012-04-06 06:03:10

标签: git git-diff

这经常发生在我身上:

我正在一两天内同时处理一些相关的更改,当需要提交时,我最终忘记了特定文件中的更改。 (这只是一个个人的git repo,所以我可以在提交中有多个更新。)

有没有办法预览我的本地文件(即将签入)和该文件的最后一次提交之间的更改?

类似的东西:

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

通过这种方式,我可以快速查看自上次签入以来我在该文件中所做的工作。

10 个答案:

答案 0 :(得分:625)

如果你想看看你还没有git add编辑的内容:

git diff myfile.txt

或者如果您想查看已添加的更改

git diff --cached myfile.txt

答案 1 :(得分:58)

git diff HEAD file

将显示您在上次提交时添加到工作树中的更改。将显示所有更改(暂存或未暂存)。

答案 2 :(得分:15)

您是否尝试-v的{​​{1}}(或--verbose)选项?它在消息编辑器中添加了提交的差异。

答案 3 :(得分:14)

检查当地差异:

git diff myfile.txt

或者您可以使用差异工具(如果您想要还原某些更改):

git difftool myfile.txt

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

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

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


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

git show master:path/my_file

答案 4 :(得分:13)

另一种需要考虑的技术,如果你想将文件与最后一次更迂腐的提交进行比较:

ftp.retrlines('RETR %s' % fpath ,lambda s, w=outzip.write: w(s+"\n"))

这种技术的优势在于您还可以与倒数第二次提交进行比较:

git diff master myfile.txt

之前的那个:

git diff master^ myfile.txt

您也可以替换&#39;〜&#39;对于插入符号&#39; ^&#39;字符和&#39;你的分支名称&#39;对于&#39; master&#39;如果你不在主分公司。<​​/ p>

答案 5 :(得分:12)

我认为这是保证GUI的完美用例。 - 虽然我完全理解它也可以在命令行中很好地实现。

就个人而言,我的每一次承诺,我都是从git-gui做的。如果有意义的话,我可以在其中使用单独的数据块进行多次原子提交。

Gut Gui可以在格式良好的彩色界面中查看差异,相当清淡。看起来这也是你应该结账的东西。

答案 6 :(得分:10)

在macOS上,转到git根目录并输入git diff *

答案 7 :(得分:4)

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

答案 8 :(得分:3)

git difftool -d HEAD filename.txt

这显示了使用终端中的VI狭缝窗口进行比较。

答案 9 :(得分:0)

可以使用 git diff 完成差异(如果您想查看所有修改文件的差异,则后跟文件名或什么都没有)。 但是,如果您已经执行了 git add * 之类的操作,则必须先使用 git restore --staged . 撤消。