所以这就是问题,我有一个二进制文件,我可以git diff
使用iconv
使用git bash
使用这种类型的转换方法。{/ p>
textconv = "iconv -f ISO-8859-1 -t UTF-8//IGNORE"
我不确定二进制文件编码是否为ISO-8859-1
,因为每当我使用git diff
时都会留下很多特殊字符。
主要问题:我无法在github上查看差异。所以我所做的是将二进制文件转换为一个可读的文件,以摆脱所有这些特殊字符。我的一小段代码生成一个.xml
文件。我希望将此文件包含在source code
基础中,以便每当发出合并请求时,都会消除git diff
来自bash
的需求。
我在追求什么:我希望在特定文件上使用git add
时执行该程序。我已经阅读了aliases
,但我不确定如何将该文件用作参数,并在添加特定文件类型时调用它。我应该修改程序来读取文件类型吗?
摘要:在特定文件类型上使用git add
(或者可能是别名)时,我想要运行外部命令转换文件,然后调用 git add 以包含转换后的文件。
TIA:)
更新:我正在尝试使用alias
并将其指定为add-filetype = "!../convert.er my.file && git commit my.file -m 'Auto-generated file on filetype add'"
,以便我可以运行git add-filetype my.file
。
解决方案: 最后我在我的gitconfig上想出了这个:
[alias]
add-filetype = "!f(){ \
../convert.er $1; \
git add $1.xml; \
git commit $1.xml -m \"Auto Generate XML file\"; \
); f"
和git-bash上的简单类型git add-filetype my.file
。
谢谢@VonC!
答案 0 :(得分:1)
afaik bash适用于基于linux的机器吗?我们的发布团队使用Windows,因此我现在正在研究使用批处理文件
这样可行:git使用git-bash bases on msys2,这意味着git别名中的任何Linux命令都将由该shell解释,即使在Windows上也是如此。
my_alias = "!f() { 〈your complex command〉 }; f"
请参阅" One weird trick for powerful Git aliases "
OP Eduard Daduya在别名中嵌入了脚本:
[alias]
add-filetype = "!f(){ \
../convert.er $1; \
git add $1.xml; \
git commit $1.xml -m \"Auto Generate XML file\"; \
); f"
但是同样的脚本可以写成:
git-add-filetype
:
/full/path/to/convert.er $1
git add $1.xml; \
git commit $1.xml -m \"Auto Generate XML file\"
任何git-xxx
脚本(%PATH%
中没有扩展名)都可以称为git xxx
:在这种情况下不需要git别名。