查看差异使用时git diff,每个更改都以以下行开头:
@@ -28,41 +20,10 @@ namespace ConsoleApplication1
Run Code Online (Sandbox Code Playgroud)
对于C,最后一部分是非常具有描述性的 - 它显示了例如发生变化的函数.但对于C#,它只显示命名空间,这不是很有用.我认为那是因为它显示的是没有缩进的最后一行.有没有办法如何配置?
我有python脚本生成和修改不同的xml文件.它们工作,以便打开文件,基于它创建ElementTree对象,尝试在必要时修改对象的内容,然后将这些对象保存到原始文件中.
问题是,有时它们甚至不会改变文件的内容.但是文件的修改日期会发生变化.
另一方面,Git将这些文件视为"已更改",因为它注意到修改日期已更改.虽然它不会产生差异(显然).
citool表现得很疯狂(警告日期已经改变,但文件本身没有,尝试重新扫描它们并再次将它们显示为"已修改")
我没有权限修改那些python脚本,因此不能重写它们(它们存储并经常在单独的repo中修改).有没有办法告诉git忽略特定文件夹的修改日期更改?看到几十个"已更改"的文件实际上只有其中一个被真正修改过,这只是非常讨厌.
我知道我可以暂存所有文件,然后取消它们,但是我需要省略一些额外的操作.有时它只会干扰正常的git工作流程.
更新: git citool错误读取(引用):"未检测到差异.<file>没有更改.此文件的修改日期已由另一个应用程序更新,但文件中的内容未更改.重新扫描将自动启动找到可能具有相同状态的其他文件."
然后重新扫描后,所有伪修改的文件再次出现.
git status还将这些文件显示为"已修改"
合并分支后,当我尝试发出拉取请求时,github不再显示差异,但git diff仍会显示差异.
例如,我有分支D,在分支H上创建了修补程序,将H合并到D,然后在D上创建了更多东西.现在git hub pull reuqest从H到D显示没有区别,但git diff HD显示差异.
我想要做的是创建一个命令行工具,以查看哪些旧分支(可能有很多)没有代码差异来开发.现在我必须去github,做一个拉动reuqest并选择每个分支,看看是否有差异.
谢谢
git diff例如--name-status,某些选项会导致在文件名旁边输出状态字母.他们是:
A,C,D,M,R,T,U,X,B
......他们的意思是
添加(A),复制(C),删除(D),修改(M),重命名(R),类型(即常规文件,符号链接,子模块,...)更改(T),未合并(U),未知(X) ),或配对破碎(B).
问题:如何解释X和B状态,以及哪些情况会导致它们出现?您能否提供一系列步骤,导致出现在输出中的这种状态git-diff,以及可能的修复方法?
对于我即将到来的学士论文,我需要打印出本文附录的git-diff输出.我非常喜欢它的输出git diff --color-words,但我完全不知道如何将这个 - 彩色和包含行号 - 带到我的Mac上的一张纸上.我知道有些像SourceTree这样的工具,但即使是那些我似乎也无法用单个文件的差异打印出来的.
好吧,我很确定我不能成为唯一一个有这个问题的人,我发现了一些建议的ansi2html解决方案,但它们似乎不适用于我的git版本(1.7.10.2).我还想过简单地打印Github提交页面(这看起来很漂亮,看起来像我需要的那样),但是当我尝试打印时,浏览器会自动删除所有着色和格式.
谢谢你的帮助!
我已经看到很多博客文章和堆栈溢出帖子说,这
git config --global diff.algorithm patience
将允许差异和合并使用耐心策略选项与默认的递归算法.
我发现这不是这种情况,我提出以下演示来说明原因.
git config --global diff.algorithm patience //mythical config statement
git clone https://github.com/kjlubick/PracticingGit.git
cd PracticingGit
git checkout origin/patience-merge-1 -t
git checkout -b merge_test //temp branch for merging
git diff origin/patience-merge-2
Run Code Online (Sandbox Code Playgroud)
这种差异(图片由meld看起来很漂亮.让我们尝试合并它.
git merge origin/patience-merge-2
Run Code Online (Sandbox Code Playgroud)
咦?合并看起来很难看.尽管第9-19行没有实际改变,但它们与diff完全不同,标记为冲突/改变.
如果我们强制合并使用耐心策略选项:
git merge --abort
git merge origin/patience-merge-2 -X patience
Run Code Online (Sandbox Code Playgroud)

那好多了.冲突与我们之前制作的差异相匹配,并且在语义上是正确的.
如何让合并实际上使用耐心设置,而不仅仅是差异?
在黑暗中我尝试了额外的镜头(失败):
git config --global merge.algorithm patience
git config --global merge.diff.algorithm patience
Run Code Online (Sandbox Code Playgroud)
系统信息:
Windows 8.1
git版本1.8.4.msysgit.0(通过GitHub for Windows 2.0)
我们可以看到存储库和工作目录之间的区别:
git diff
Run Code Online (Sandbox Code Playgroud)
我们可以看到存储库和登台索引之间的区别:
git diff --staged
Run Code Online (Sandbox Code Playgroud)
但是我们如何看待工作目录和登台索引之间的区别?
我在我的分支上做了几次提交,现在我要看到从master分支时的变化.然而,由于我最初将其分支合并,因此现在的大师现在已经合并了其他分支.
类似于 显示git分支中的所有提交,因为来自master的原始分支点,但是关于日志.
我确实试过了
git diff --boundary master..
Run Code Online (Sandbox Code Playgroud)
但我仍然看到比我的更多变化.
编辑: 我真的希望有一种方法不需要任何SHA的知识或者提交了多少次提交.如果我不需要它们,我可以自动化,自动化和自动化,并且可以更轻松,无故障地对其进行别名.
git diff my_branch_name...master
Run Code Online (Sandbox Code Playgroud)
似乎很接近但不正确.