我正在尝试在同一代码库中创建两个文件夹之间的彩色差异(这可能是完全错误的方法)。
我相信其中一种实现方式是通过 git diff --no-index folder1 folder2
,它会自动为您创建一个补丁(很酷)。
但是,该差异还包括(正如人们所期望的)所有被.gitignore
忽略的文件。
folder1
node_modules
src/
.gitignore
package.json
README.md
folder2
node_modules
src/
.gitignore
package.json
README.md
我想忽略 node_modules
。
还有哪些可能性?替代方案?
.gitignore
文件从folder1过滤出不需要的路径的方法:src=folder1 dst=folder2; { { git diff --no-index --no-renames --name-only -- "$src" "$dst" | sed '/^\/dev\/null$/d;s~^[^/]*/~~;/^[^/]*\.git\//d' | sort -u | tee /dev/stderr; } | git -C "$src" check-ignore --stdin; } |& uniq -u | while read file; do f1="$src/$file" f2="$dst/$file"; git diff --no-index --no-renames -- "$([ -e "$f1" ] && echo "$f1" || echo /dev/null)" "$([ -e "$f2" ] && echo "$f2" || echo /dev/null)"; done
- Jay