除了编写别名或脚本之外,是否有更短的命令来获取特定提交的差异?
git diff 15dc8^..15dc8
Run Code Online (Sandbox Code Playgroud)
如果您只提供单个提交ID git diff 15dc8,则会针对HEAD区分该提交.
我有一个由同事创建的.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) 这经常发生在我身上:
我在一两天内同时处理了几个相关的更改,当需要提交时,我最终忘记了特定文件中的更改.(这只是一个个人的git repo,所以我可以在提交中有多个更新.)
有没有办法预览我的本地文件(即将签入)和该文件的最后一次提交之间的更改?
就像是:
git diff --changed /myfile.txt
Run Code Online (Sandbox Code Playgroud)
它会打印出如下内容:
line 23
(last commit): var = 2+2
(current): var = myfunction() + 2
line 149
(last commit): return var
(current): return var / 7
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我可以快速查看自上次签入以来我在该文件中所做的工作.
一些Git命令采用提交范围,一个有效语法是用两个点分隔两个提交名称..,另一个语法使用三个点....
两者有什么不同?
是否有可能让git在特定文件之间产生差异,因为它现在存在,并且在最后一次提交之前存在改变它?
也就是说,如果我们知道:
$ git log --oneline myfile
123abc Fix some stuff
456def Frobble the foos
789dba Initial commit
Run Code Online (Sandbox Code Playgroud)
然后git diff 456def myfile显示myfile的最后一次更改.没有所产生的知识,是否有可能做同样的事情git log; 123abc有什么变化?
我试图db/irrelevant.php从Git diff中排除一个文件().我试图把在一个文件db名为的子目录.gitattributes与行irrelevant.php -diff
,我也尝试创建一个名为.git/info/attributes包含db/irrelevant.php.
在所有情况下,该db/irrelevant.php文件都作为Git二进制补丁包含在diff中.我想要的是diff命令忽略对该文件的更改.我究竟做错了什么?
我在Ubuntu 10.04(Lucid Lynx)上使用Git .
我已经向我的主人做了一些提交.
但是,我希望得到这些提交之间的区别.所有这些都在我的主分支上.
例如:
commit dj374
made changes
commit y4746
made changes
commit k73ud
made changes
Run Code Online (Sandbox Code Playgroud)
我想得到k73ud和dj374之间的区别.但是,当我做了以下操作时,我无法看到我所做的更改k73ud.
git diff k73ud..dj374 > master.patch
Run Code Online (Sandbox Code Playgroud)