Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
git差异:不考虑行订单_Git_Git Diff - Fatal编程技术网

git差异:不考虑行订单

git差异:不考虑行订单,git,git-diff,Git,Git Diff,我的存储库中有一个由软件程序生成的文件 这个程序有时会对文件中的行重新排序,这其实并不重要,因为行顺序并不重要。问题是,在执行git diff时,很难看到是否有任何实际更改 是否存在不考虑行顺序的差异?或者,如果git diff不可能,您会想到任何shell命令吗 谢谢 在一天结束时,我会在提交之前手动运行此命令,以了解文件是否已更改或只是行重新排序。也许我会为它设置一个git钩子 diff -wB <(sort file.txt) <(git show HEAD:file.txt

我的存储库中有一个由软件程序生成的文件

这个程序有时会对文件中的行重新排序,这其实并不重要,因为行顺序并不重要。问题是,在执行git diff时,很难看到是否有任何实际更改

是否存在不考虑行顺序的差异?或者,如果git diff不可能,您会想到任何shell命令吗


谢谢

在一天结束时,我会在提交之前手动运行此命令,以了解文件是否已更改或只是行重新排序。也许我会为它设置一个git钩子

diff -wB <(sort file.txt) <(git show HEAD:file.txt | sort -)

下面是一个使用DIFF_EXTERNAL_工具进行的相当恶劣的黑客攻击:

#!/bin/bash

# this will be called with path old-file old-hex old-mode new-file new-hex new-mode
echo $*
diff -uw <(tr -s '[[:space:]]' < "$2" | sort -fbi) <(tr -s '[[:space:]]' < "$5" | sort -fbi) || true
例如,在这里,我如何使用它来比较绑定区域文件的一系列更改:

#!/bin/bash

#                path old-file old-hex old-mode new-file new-hex new-mode
#echo $*
atomize_zone="sed 's/^@//;/^\;/d;s/[[:space:]][[:space:]]*/ /g' | egrep -v '^.TTL (1D|86400)' | grep -v '; serial' | grep -v 'RR TTL' | grep -v '^.TTL 1H' | egrep -v 'IN SOA (ns1|bureau).koumbit.net' | sort -fbi" 

output=$(diff -uw <(sh -c "$atomize_zone" <"$2") <(sh -c "$atomize_zone" < "$5") || true)

if [ ! -z "$output" ]; then
        echo $1
        cat <<EOF
$output
EOF
#/bin/bash
#路径旧文件旧十六进制旧模式新文件新十六进制新模式
#回音$*
原子化(automatize|zone=“sed's//^@//^\/d;s//[:space:][:space:][:space:][]*///g'| egrep-v'^.TTL(1D | 86400)| grep-v';serial'| grep-v'RR TTL'| grep-v'^.TTL 1H'| egrep v'(国家海洋局)。koumbit.net'| sort-fbi“

输出=$(diff-uw如果行顺序真的不重要,我想你可以在将文件提交到
git
之前以某种方式对文件进行
排序,
…这不重要,但它或多或少是为了让人可读。因此,我不想在提交之前对其排序,但可能只是在diff之前排序。我不知道我是否解释过自己。修复生成器,以便我t总是以固定的规范顺序生成文件。
GIT_EXTERNAL_DIFF=wdiff-sort git diff
#!/bin/bash

#                path old-file old-hex old-mode new-file new-hex new-mode
#echo $*
atomize_zone="sed 's/^@//;/^\;/d;s/[[:space:]][[:space:]]*/ /g' | egrep -v '^.TTL (1D|86400)' | grep -v '; serial' | grep -v 'RR TTL' | grep -v '^.TTL 1H' | egrep -v 'IN SOA (ns1|bureau).koumbit.net' | sort -fbi" 

output=$(diff -uw <(sh -c "$atomize_zone" <"$2") <(sh -c "$atomize_zone" < "$5") || true)

if [ ! -z "$output" ]; then
        echo $1
        cat <<EOF
$output
EOF