问题标签 [git-diff]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - How to diff one file to an arbitrary version in Git?
How can I diff a file, say pom.xml
, from the master branch to an arbitrary older version in Git?
git - 使 git diff (NOT difftool) 和 git log -p 与 *.sql 文件和 Windows PowerShell 一起工作
我知道如何配置外部工具以通过调用来查看差异git difftool
。但是,如果我想将文件整个历史记录的所有更改“转储”到控制台窗口,我想使用git log -p <filename>
. 我遇到的问题是我的 Windows 环境中的 *.sql 文件。 difftool
(使用我配置的工具)正确处理 unicode 文件,但diff
没有,这是我认为 git log -p
在幕后使用的。
有没有办法让给git diff
定/配置扩展名的文件“工作”,我知道实际上只有 ANSI 字符并显示输出到控制台的实际文本更改(在我的情况下,Windows PowerShell 托管在控制台内)。
注意:我已经看过这个关于让 git diff 识别 UTF16 的问题/答案,但我无法让它工作(iconv 和 mktemp 都不存在于我的系统上)。
也许这是我应该作为唯一可能的解决方案继续检查/试验的方法?或者我唯一的解决方案是确保将我知道仅存在 ANSI 字符的文件保存为 ANSI - 丢失我目前在 *.sql 文件(以及我不知道的任何其他文件)上的所有历史记录会令人失望现在存储为 unicode - 我是 Visual SourceSafe 新转换的 git 用户,因此不必查看我修改的所有文件类型的差异)。
git - Git“配对损坏”和“未知”状态是什么意思,它们何时发生?
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 - 我怎样才能将 git-diff 限制在一个目录中,没有它的子目录?
我git diff --name-status
用来跟踪在两次提交之间修改/添加/删除/重命名/复制了哪些文件,效果很好。
现在假设我将文件移动file1
到newdir/file1
,提交,然后运行 git diff,我得到这个:
有没有办法让 git 将自己限制在给定目录内的更改列表中,而不是其子目录?我想分别知道根目录和目录的确切更改newdir
。对于newdir
,很简单:
…但是我怎样才能获得根目录中的“互补”差异信息?即,这个输出:
请注意,我想保留-C
在同一目录中检测重命名和副本的选项。
git - Git - 如果我有 sha,查看与以前版本的差异的最简单方法
我的一位同事检查了 Git 的一些更改,我想看看这些更改到底是什么。换句话说,他的签到与其父级之间的差异。
在我看来合乎逻辑的是运行这个命令:
但这没有用。它似乎显示了该 SHA 和我当前的工作副本之间的差异。
显示给定 SHA 与其父级之间差异的正确命令是什么?
git - git diff:忽略变量的重命名
在进行一些重构时,我将变量从 重命名oldName
为newName
。有没有办法告诉git diff
命令忽略oldName
现在的差异newName
?我想这样做是为了只关注其他重要的变化。如果这是可能的,我是否还可以指定多个要忽略的变量重命名,例如,忽略从oldName1
tonewName1
和 from oldName2
to newName2
... 的变化?
git - 为什么在 Filemerge 上不加载冲突差异,而其他差异呢?
我已将 GIT 设置为在 filemerge 中加载差异,但是当存在冲突时,它只会将差异打印到终端。
有没有办法解决这个问题,或者有更好的应用程序来处理冲突?
git - 我不能让 git diff 使用 opendiff
我想使用 opendiff 作为 git diff 的默认差异工具。这曾经有效,但由于某种原因停止工作。我正在使用一个脚本:
在 .gitconfig 中设置:
这最近对我不起作用。怎么了?
更新:当我克隆一个新的存储库时,一切正常!奇怪的!
git - 在 Git 中,我如何区分我的分支的第一次提交?
我已经对本地分支进行了多次提交,但我不确定将我目前拥有的内容与分支的起始状态进行比较的最佳方法是什么。我知道git diff HEAD HEAD~6
如果我的分支有 6 次提交,我可以做一些事情,但我希望得到与提交次数无关的东西。
编辑:我没有提到这一点:我希望我不必挖掘日志来获取我分支的提交的哈希值。例如,如果我有 80 次提交,这将不是一个有趣的任务。
另外,假设我分支的原始分支已经发生了一些变化。
git - git diff 的 /a /b 前缀是什么原因
我已经使用 Git 好几年了,一直想知道为什么git diff
在修改文件的名称前加上a/
和b/
. 我预计最终会偶然发现一个有用的用例,但直到现在它总是很烦人,而且从来没有帮助过。
到底有什么好处呢?为什么默认启用此功能?在什么情况下有用?