如何在Git中查看单个文件的更改历史记录,完整的详细信息?
我有:
git log -- [filename]
Run Code Online (Sandbox Code Playgroud)
它显示了文件的提交历史记录,但是如何获取每个文件更改的内容?
我正试图从MS SourceSafe过渡到过去那么简单right-click→ show history.
说我得到了一个补丁git format-patch.该文件基本上是一个带有一些元数据的统一差异.如果我在Vim中打开文件,我可以看到哪些行已被修改,但我看不到更改行中的哪些字符不同.有没有人知道(在Vim或其他一些在Ubuntu上运行的免费软件)可视化每个角色的差异?
可视化每个字符差异的计数器示例是在执行时vimdiff a b.
更新时间:2010年12月12日星期五22:36:23
diffpatch对您使用单个文件的情况很有帮助.
2016年6月16日星期六17:56:10更新
在git 2.9中查看diff-highlight.这个脚本正是我最初寻求的.
当我做一个git diff时,它会显示已添加的行:
+ this line is added
Run Code Online (Sandbox Code Playgroud)
已删除的行:
- this line is removed
Run Code Online (Sandbox Code Playgroud)
但它也显示了许多未修改的行:
this line is not modified
this line is also not modified
Run Code Online (Sandbox Code Playgroud)
这导致实际的git diff看起来像这样:
+ this line is added
this line is not modified
- this line is removed
this line is not modified
Run Code Online (Sandbox Code Playgroud)
我可以要求git只显示已修改的行并忽略所有其他未修改的代码吗?我写了一个方法,它将删除所有在它们前面没有"+"或" - "符号的行,但我相信必须有一个更简单的方法来执行此操作.
在我的git diff中,我只对看到已修改的行感兴趣.
提前致谢.
假设我有一个文本文件
alex
bob
matrix
will be removed
git repo
Run Code Online (Sandbox Code Playgroud)
我已将其更新为
alex
new line here
another new line
bob
matrix
git
Run Code Online (Sandbox Code Playgroud)
在这里,我添加了行号(2,3)和更新的行号(6)
如何使用git diff或任何其他git命令获取这些行号信息?
当我运行时git diff,每个差异的标题部分以白色文本显示.因为我使用的是浅色背景,所以很难阅读,所以我想改变它.
我发现我可以改变diff输出中的其他颜色,如下所示(in .gitconfig):
[color "diff"]
old = green
new = red
Run Code Online (Sandbox Code Playgroud)
但是我无法弄清楚要把标题颜色放在那里.更好的是,是否存在记录所有默认git config设置的位置?
'diff header'是指这样的行:
diff --git a/README.md b/README.md
index f102026..c5e3428 100644
--- a/README.md
+++ b/README.md
Run Code Online (Sandbox Code Playgroud) 我有这个用于过滤差异表达基因的awk脚本.我有一个在R中创建的csv文件
#Command to get DE genes
awk -F '\t' '$14 < 0.05 && $10 < -1 && $7 > 1 { print > "Genes-Down.csv" }
$14 < 0.05 && $10 > +1 && $8 > 1 { print > "Genes-Up.csv" }' Results-RPKMs.csv
Run Code Online (Sandbox Code Playgroud)
我现在开始在Mac OS上进行所有分析,同样的命令不起作用.它也不会给出任何错误消息.它运行,没有任何反应.我也遇到了与其他sed命令相同的问题,但使用awk很容易创建新的命令.谢谢.
更新:MacOS X awk是版本20070501.但是,Ubuntu机器有1.3.3的mawk.命令awk --version不起作用.不得不使用awk -W --version.所以我认为这就是为什么它适用于Ubuntu但不适用于MacOSX.所以我下载了mawk并使用fink安装它,现在命令在MacOSX中运行.谢谢你的帮助.
Update2:实际上问题不是awk.通常我在R中创建csv文件.然后我只运行脚本来进行过滤.事实证明,如果我在Excel中打开csv文件或以csv格式保存Excel文件,则脚本不起作用(尝试使用不同的分隔符多次).显然,如果您在MacOX(Excel 2011)中将电子表格保存为.csv并尝试在Excel中将其打开,则表示它是一个SYLK文件.Microsoft网站上有此描述.如果我使用OpenOffice,它可以正常工作.最好.
在推送Git提交之前,我通常想要查看我在代码中添加的所有TODO.我已经尝试了几种方法,但我还没有找到一个很好的方法来做到这一点.
例如,使用以下命令,我可以看到在上次提交中添加(和删除)的所有TODO:
git diff HEAD^ | grep "TODO"
Run Code Online (Sandbox Code Playgroud)
但是在此输出中,我没有看到哪些文件包含更改,因此我必须猜测或搜索相应的文件.使用以下命令,我看到所有带有"TODO"的文件发生了变化,但我没有看到实际的TODO:
git diff HEAD^ --name-only -G "TODO"
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我怎样才能看到diff行和包含差异的文件名?例如,是否可以git diff使用文件名为每个diff行创建前缀?然后grep'ed线将提供我需要的所有信息.