我上演了一些改变来承诺; 如何查看为下一次提交而暂存的所有文件的差异?我知道git状态,但我想看到实际的差异 - 而不仅仅是分阶段文件的名称.
我看到git-diff(1)手册页说
git diff [--options] [ - ] [...]
此表单用于查看您对索引所做的更改(下一次提交的暂存区域).换句话说,差异是你可以告诉git进一步添加到索引但你还没有.您可以使用git-add(1)暂存这些更改.
不幸的是,我无法理解这一点.必须有一些方便的单行,我可以创建一个别名,对吗?
当我这样做时,git diff COMMIT我看到了提交和HEAD之间的变化(据我所知),但我希望看到单个提交所做的更改.
我没有在diff/log上找到任何明显的选项,它会给我输出.
我过去的某个时候删除了文件或某些代码.我可以在内容中进行grep(不在提交消息中)吗?
一个非常糟糕的解决方案是grep日志:
git log -p | grep <pattern>
Run Code Online (Sandbox Code Playgroud)
但是,这不会立即返回提交哈希.我一直玩得git grep无济于事.
如果我想找到两个目录树之间的差异,我通常只执行:
diff -r dir1/ dir2/
Run Code Online (Sandbox Code Playgroud)
这准确地输出了相应文件之间的差异.我有兴趣只获取内容不同的相应文件列表.我假设这只是一个传递命令行选项的问题diff,但我在手册页上找不到任何内容.
有什么建议?
当我输入时git diff,我想用我选择的视觉差异工具(Windows上的SourceGear"diffmerge")查看输出.如何配置git来执行此操作?
当我有差异时,我怎样才能将它着色以使其看起来很好?我希望它用于命令行,所以请不要使用GUI解决方案.
我在Windows 7上使用Git Bash.当我运行时git diff,我看到了这个:

但是,我无法回到常规提示.按Ctrl+ C似乎可以工作,但是一旦我开始输入一个命令,它就会被覆盖(END)在那个图像中.
我有一个由同事创建的.diff文件,并希望将该diff文件中列出的更改应用到完全相同的存储库的本地分支.我无权访问用于生成此diff文件的worker的pc或分支.
显然,我可以逐行进行并重新输入所有内容,但我宁愿不让系统受到人为错误的影响.最简单的方法是什么?
在某个项目中,某些文件包含^ M作为换行符分隔符.分散这些文件显然是不可能的,因为git-diff认为它是整个文件只是一行.
如何与之前的版本区别开来?
有没有像"在分辨时将^ M视为换行符"的选项?
prompt> git-diff "HEAD^" -- MyFile.as
diff --git a/myproject/MyFile.as b/myproject/MyFile.as
index be78321..a393ba3 100644
--- a/myproject/MyFile.cpp
+++ b/myproject/MyFile.cpp
@@ -1 +1 @@
-<U+FEFF>import flash.events.MouseEvent;^Mimport mx.controls.*;^Mimport mx.utils.Delegate
\ No newline at end of file
+<U+FEFF>import flash.events.MouseEvent;^Mimport mx.controls.*;^Mimport mx.utils.Delegate
\ No newline at end of file
prompt>
Run Code Online (Sandbox Code Playgroud)
更新:
现在我编写了一个脚本,检查最新的10个版本并将CR转换为LF.
require 'fileutils'
if ARGV.size != 3
puts "a git-path must be provided"
puts "a filename must be provided"
puts "a result-dir must be provided"
puts "example:"
puts "ruby gitcrdiff.rb project/dir1/dir2/dir3/ …Run Code Online (Sandbox Code Playgroud)