Git:配置 difftool 和 mergetool 的模式

2024-01-12

在 Mercurial 中,可以为外部差异和合并工具定义一种模式(以便仅针对与指定模式匹配的文件调用它们):

[diff-patterns]
**.ext = difftool
[merge-patterns]
**.ext = mergetool

如何在 Git 中定义这样的模式?

git-config(1) 中的 [mergetool] 部分没有提及任何模式、掩码或任何类似的内容。

EDIT:

这是我的 .git/config 的相关部分:

[diff]
    tool = difftool
[difftool "difftool"]
    cmd = difftool.git.sh "$LOCAL" "$REMOTE" "$BASE"

[merge]
    tool = mergetool
[mergetool "mergetool"]
    cmd = mergetool.git.sh "$LOCAL" "$REMOTE" "$BASE" "$MERGED"

现在它适用于所有文件。

我希望调用我的 difftool 和 mergetoolonly对于名称结尾为的文件.ext

EDIT:

我添加了一个文件 .git/info/attributes ,其中包含以下内容:

*.ext   diff=difftool
*.ext   merge=mergetool

我还添加了

[diff "difftool"]
    name = my custom diff driver
    driver = difftool.git.sh %A %B %O
[merge "mergetool"]
    name = my custom merge driver
    driver = mergetool.git.sh %A %B %O %A

到我的 .git/config。

现在我跑

git difftool

它调用 KDiff3 而不是我的 difftool。我做错了什么?

Remark: 我正在使用 difftool 而不是 mergetool,因为它更容易测试,并且我相信如果我设法配置 difftool,那么如何配置 mergetool 对我来说将是显而易见的。

EDIT:

Difftool 现在可以工作了。

.git/配置:

[diff "difftool"]
    command = difftool.git.sh

.git/信息/属性:

.ext diff=difftool

difftool.git.sh(在路径中)

#!/bin/sh
difftool.jar "$2" "$5"

但在 Windows 上有一个副作用:git diff现在结果为 APPCRASH。

EDIT:

我已经弄清楚如何避免崩溃或挂起git diff: 应该使用git difftool或致电git diff通过sh: sh -c "git diff"


您可以在gitattributes file http://git-scm.com/docs/gitattributes.

例如参见“如何告诉 git 始终选择本地版本来进行特定文件上的冲突合并? https://stackoverflow.com/questions/928646/how-do-i-tell-git-to-always-select-my-local-version-for-conflicted-merges-on-a-sp"

*.ext merge=mymergetool

您可以在 gitattributes 文件中使用模式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git:配置 difftool 和 mergetool 的模式 的相关文章

  • 使用 Jenkins Git 插件中的 SSH 密钥在构建期间运行 Git 命令

    我们在 Jenkins 上的构建作业作为发布构建的一部分运行一些 git 命令 例如 git push 和 git pull 因此需要一种在构建期间从 shell 运行经过身份验证的 git 命令的方法 我们的詹金斯奴隶不持有任何凭证 因为
  • 将 git 与 svn 一起使用的好习惯

    Subversion 几年前就很流行 现在 git 也开始流行 越来越多的人想用 git 取代 Subversion 问题是很多项目都是基于 Subversion 的 所以问题是如何将 git 与 Subversion 一起使用 不要完全取
  • git 交互式变基:停止而不提交

    长话短说 有办法进去吗git rebase i停止编辑 没有提交 ID TLDR 更长的版本 背景 With git rebase i 我得到一个文本编辑器 我可以在其中定义命令列表 从pick COMMIT ID在每一行上 其中一个选项是
  • 在 Github 提交中强制执行 PEP-8'ish 格式

    是否有任何预制解决方案可以在 Git 提交挂钩中强制执行良好的 Python 标准 有没有办法在本地结帐中自动执行此过程 类似于 Bazaar 可以将提交挂钩推送给客户端 当您签出存储库时 它会安装提交挂钩 这应该足够了 无需运行进一步的工
  • 变基后无法推送到分支

    我们使用 git 并有一个 master 分支和开发人员分支 我需要添加一个新功能 然后将提交重新设置为 master 然后将 master 推送到 CI 服务器 问题是 如果我在变基期间发生冲突 我无法在变基完成后推送到我的远程开发人员分
  • 如何删除“致命:松散物体”?

    我的一个克隆存储库是从 git fsck 获取的 致命 松散对象 40bda4e3b79c3d7bf598df31d9e68470f97a3f79 存储在 git objects 40 bda4e3b79c3d7bf598df31d9e68
  • Jenkins 多分支管道 - 在分支中配置属性?

    我们已经使用 Jenkins 多分支管道插件成功设置了构建管道 该插件在大多数情况下都运行良好 但是我们遇到了一个困扰我们的问题 Jenkinsfile包含一组属性 这些属性也显示在 UI 中 但如何为各个分支设置默认值 这就是我们的属性定
  • 有什么方法可以有效地应用大型 git 补丁吗?

    我们收到了一个大补丁 修改了大约 17000 个文件 其大小为5 2G 应用补丁时git apply 3 12个小时后还没有完成 我们将每个文件的补丁分成更小的补丁 然后一一应用它们 这样至少我们可以看到进度 再次卡在一个文件补丁上 仍然有
  • 更改 git diff 输出前后的行数

    我想增加更改之前和之后显示的行数git diff output 类似于grep A3 B5 根据git diff help git diff支持与标准相同的参数diff命令 w r t 上下文 U
  • 在 github 上查找强制推送的提交者

    在我们的项目 托管在 GitHub 上 中 每隔一段时间就会有人意外强制推送 master 没有人知道是否这样做 我想找出是谁干的 以及背后有什么样的错误配置的工具或坏习惯 那么问题来了 如何识别进行强制推送的用户呢 当我拉动时 我看到这样
  • 克隆存储库时出现 Git 冲突复制错误

    我使用 dropbox 作为 git 存储库 现在由于同步中的一些问题 git 中存在一些冲突的副本 我该如何消除这种冲突 由于这种冲突 我无法克隆该存储库的内容 我在克隆存储库时遇到的错误是 Git 致命 参考格式无效 refs head
  • 为什么每次合并分支后我的 git log graph 都会多增长一行?

    我习惯使用git log oneline graph decorate all作为别名git ll在终端中查看提交图表 但是当我每次合并我的时 一个问题让我感到困惑develop to master 上面命令的输出可能是这样的 0d1bf7
  • 如何使用 Github Pages 分支正确提交到存储库中

    我有一个问题 情况基于gh pages https pages github com 我的项目使用预处理器和其他困难的人员 因此 我的项目结构如下所示 主分支 src node modules public js css etc index
  • 将新更新从原始 GitHub 存储库提取到分叉的 GitHub 存储库

    我在 GitHub 上分叉了某人的存储库 并希望使用原始存储库中的提交和更新来更新我的版本 这些是在我分叉我的副本后制作的 如何提取在源中所做的更改并将它们合并到我的存储库中 您必须将原始存储库 您分叉的存储库 添加为远程存储库 来自有关分
  • 提交 ID 从哪里来?

    我只是对此很好奇 提交 ID 不能是随机的 因为它们需要是唯一的 不过 它们似乎是随机的 这让我想知道 为什么它们不只是连续的数字 我的意思是 它们只需要在存储库中是唯一的 对吧 或者我在这里错了 Thanks Git 提交 ID 是 SH
  • 运行“git gui”时如何跳过“松散对象”弹出窗口

    当我运行 git gui 时 我会看到一个弹出窗口 上面写着 This repository currently has approximately 1500 loose objects 然后它建议压缩数据库 我之前已经这样做过 它将松散对
  • 从 Jenkinsfile 中获取有关其他分支的信息

    Jenkins Blue Ocean 与链接的 Bitbucket Server 实例在同一本地网络上运行 Jenkins 中的多分支项目能够为本地 Bitbucket 服务器上链接的 Bitbucket 存储库的每个分支创建一个分支 但在
  • 列出其他人(即不是我)所做的提交?

    是否有一种标准方法可以列出 git 存储库中其他人 即不是我自己 所做的所有提交 I tried git log not author username 但看起来 not仅适用于修订版 的联机帮助页git log似乎没有提供反转谓词的方法
  • Visual Studio 2013删除已删除的git分支

    我遇到这个问题 在 VS2013 中 当我从源创建一个新分支时 源分支的下拉列表列出了曾经创建的所有分支 这包括长期从本地存储库和远程 源存储库中删除的分支 如何删除已删除的分支 Visual Studio 将它们保存在本地缓存中 您可以从
  • 子 git 存储库作为主存储库的子集

    我正在寻找一种方法来设置 git 存储库 其中包括来自较大存储库的文件子集 并从该主存储库继承历史记录 我的主要动机是能够通过 GitHub 共享代码子集 我目前通过单个 git 存储库管理我的研究相关 主要是 Matlab 代码 代码本身

随机推荐

  • 使用 WebEssentials 创建 LESS 源映射文件

    根据 WebEssential 日志 从 VS2013 版本 1 6 2014 年 1 月 2 日 开始支持 LESS 源映射 http vswebessentials com changelog http vswebessentials
  • 运行 git pull origin master 时出错

    我是使用 git 版本控制的新手 运行 git 时遇到此错误pull origin master 这是错误 From opt mygit abc branch master gt FETCH HEAD error Untracked wor
  • asp.net core 控制器操作路由使用编码斜杠来确定路由(仅限 IIS)

    我有一个 asp net core 2 2 mvc 操作方法和GET来自客户端 JavaScript 代码 Route search searchterm public IActionResult Search string searcht
  • SQL Server:如何创建存储过程

    我正在从一本书中学习 sql 并且正在尝试编写一个存储过程 但我不相信我做得正确 以下方式在 Microsoft SQL 中无效吗 如果不是 那么什么时候有效 如果有效 create procedure dept count in dept
  • PyCharm 可以自动生成 __eq__() 和 __hash__() 实现吗?

    我是 PyCharm 新手 但也是 IntelliJ 的长期用户 在IntelliJ中 当你编写类定义时 IDE可以自动生成构造函数 equals 方法 以及hashCode 基于实例变量的方法 这不仅有利于节省打字 还可以防止无意的错误并
  • MVC 中的自定义验证未在部分视图上执行

    所以我有强类型的文件上传输入 下面是model class public class UploadImageAlbum CustomFileValidator public HttpPostedFileBase Images get set
  • 当代码位于库中时,S4Vectors 出现 do.call 错误“第二个参数必须是列表”

    这是在另一个问题的背景下提出的一个问题 使用列名称向量提取数据框之类的对象的多列并将其粘贴在一起 https stackoverflow com questions 40789601 我收到了基于使用情况的答案do call当代码是库的一部
  • 如何更改将“editor.insertSpaces”设置为“auto”的每种语言配置

    我使用 VS Code 来编辑多种语言 主要是 Ruby PHP 和 Javascript 的项目 对于每种语言 我们有不同的缩进模型 空格 制表符和宽度 看起来 VS Code 支持这一点 因为它允许两者editor insertSpac
  • Android 模拟器与真实设备

    开发人员应该注意哪些差异 我知道这些限制 预装软件 真实设备可以比模拟器预装更多的应用程序 您无法在模拟器中使用 捕获 照片 视频功能 根据模拟器文档 http developer android com guide developing
  • 而是触发器或计算列?哪个更好?

    我想知道下面两种方法之间是否存在性能差异 基本上 问题是我们允许在 id 中使用空格和破折号 但某些遗留应用程序无法使用它们 因此它们被删除 据我所知 最简洁的方法是在触发器中或作为计算列 SQL 如下所示 已清理并匿名 因此如果出现错误
  • Django模型继承和管理系统

    我正在尝试构建一个系统来管理页面中各种类型的内容 例如 页面可以具有文本内容 超链接内容 视频内容等 在我的建模代码中 我有一个基类 class ContentItem models Model title models CharField
  • TypeError: 恰好需要 1 个参数(给定 2 个)Python 错误

    问题是我有这个功能 def fuerza repulsion x area 100 100 k math sqrt area len self grafo 0 return k 2 x c2 在这一行中 f mod self fuerza
  • 指定数据库时出现身份验证失败错误

    我正在尝试连接到mongodb来自我的网络应用程序 但是 我得到一个auth failed error当我指定要连接的数据库时 来自 mongo 如果我不指定数据库 则连接成功 我已经检查了拼写以及数据库是否使用 mongo 命令行退出sh
  • Pandas(python):列中的最大值定义新列中的新值

    我有一个大约有 50 列的 df Product ID Cat1 Cat2 Cat3 other columns 8937456 0 5 10 8497534 25 3 0 8754392 4 15 7 Cat 表示该产品有多少数量属于某个
  • 如何使用 RSA256 在 PHP 中创建有效的 JWT

    我也遇到过类似的困难question https stackoverflow com questions 35314629 how to sign data in php with hmac using a pem private key
  • 如何使用 dependency.yml 引用本地模块?

    如何使用引用本地模块依赖 yml 我想我会放弃这个问题 因为它定期在论坛中显示 答案应该如下 采用以下应用程序层次结构 myplayapp myfirstmodule mysecondmodule 我正在使用运行我的应用程序播放运行 myp
  • 如何通过引用分配lua变量

    如何在Lua中通过引用将一个变量分配给另一个变量 例如 想要执行相当于 a b 的操作 其中 a 将是指向 b 的指针 背景 有一个案例 我实际上有这样的事情 local a b c d e f g lots of variables if
  • 从容器重建 docker run 命令参数

    最好的重建方法是什么docker run来自现有 docker 容器的命令参数 我可以用docker inspect并使用在那里找到的信息 还有更好的办法吗 不是很容易 但是您可以通过格式化输出来做到这一点docker inspect 对于
  • C++ list::sort 的自定义比较函数

    您好 我在编译一段简单的代码时遇到问题 我正在创建一个实现一副纸牌的类 并且我想使用 list short 方法创建一个洗牌方法 相关代码 deck h ifndef DECK H define DECK H include
  • Git:配置 difftool 和 mergetool 的模式

    在 Mercurial 中 可以为外部差异和合并工具定义一种模式 以便仅针对与指定模式匹配的文件调用它们 diff patterns ext difftool merge patterns ext mergetool 如何在 Git 中定义