这经常发生在我身上:
我正在一两天内同时处理一些相关的更改,当需要提交时,我最终忘记了特定文件中的更改。 (这只是一个个人的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
通过这种方式,我可以快速查看自上次签入以来我在该文件中所做的工作。
答案 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 .
撤消。