git - 直接 diff 本地文件在 Git 中提交
问题描述
我想使用外部差异工具在提交和我的本地文件之间运行差异,而我的本地没有临时文件。我在 Windows 上运行 git。
我目前正在尝试使用:git difftool --dir-diff <commit> -- <path_to_local_dir>
。这种方法工作正常,但是<path_to_local>
然后由AppData 中的临时文件夹表示。对于大多数用途,这很好。
但是,使用外部差异工具(在我的情况下为 BeyondCompare4),差异工具提供了“复制”特定更改的<commit>
功能<path_to_local>
。这就是我的问题所在。如果 Git 强制对本地文件使用临时文件夹,那么“复制”行为是无用的,因为它只是修改临时文件。
我知道我可以编写一个脚本,在保存后将temp的内容复制到我的本地文件中,但我正在寻找一个更优雅的解决方案。
作为旁注,默认情况下,Mercurial 似乎支持请求的行为(仅在本地文件不存在时创建临时文件)
所以,简而言之,有没有办法强制git difftool
实际使用本地文件,而不是为我已经存在的本地文件创建和使用临时文件?
编辑:单词用法
解决方案
就像我做很多事情一样,我最终过度思考了这个问题。
事实证明,如 git difftool 文档中所述,git difftool
默认情况下对工作树中的文件使用符号链接。
符号链接的完整解释在这里。简单的解释是,如果您修改一个文件的符号链接,您实际上是在修改该文件。
在 Windows 上,问题变得更加不清楚,因为 Git 的默认行为是--no-symlinks
,但最终结果应该是相同的。
简短的回答:只需单击临时文件上的保存。更改应显示在您的本地文件中。
推荐阅读
- node.js - 如何将 ES6 导入转换为要求?
- sql-server - 调度呼叫的表设计
- python - 熊猫数据框列标题到数据标签
- javascript - React Apollo Hooks - 链式突变
- c++ - SSL_CTX_set_cipher_list() 没有影响
- dataweave - 将带有链接 Hashmap 条目的 Java Linked Hashmap 转换为对象数组
- spring-security - 有没有办法为个人消费者实现对 spring-cloud 消息的自定义验证?
- scala - 如何使用另一列中特定行的值填充新的 spark 数据框列。需要建议
- depth - 如何优化我的视差图视差图?
- python - 来自 API 的分页 XML 解析