我正在尝试在同一存储库中的两个文件夹之间创建彩色差异(这可能是完全错误的方法)。
我相信实现这一目标的一种方法是通过 git diff --no-index folder1 folder2
,它会自动为您创建一个补丁(酷)。
但是,diff 还包括(正如人们所期望的那样)所有 .gitignore
的文件。
folder1
node_modules
src/
.gitignore
package.json
README.md
folder2
node_modules
src/
.gitignore
package.json
README.md
我想忽略 node_modules
。
可能性?替代方案?
最佳答案
作弊版:
git diff $(git commit-tree -m '' @:folder1) $(git commit-tree -m '' @:folder2)
它对每棵树进行即时提交(就像它们在 checkout 时一样)并区分这两个提交。
如果您想对当前的工作树内容执行此操作,您可以轻松地进行临时提交,
( export GIT_INDEX_FILE=.git/scratch-index
git add .
temp=`git write-tree`
git diff $(git commit-tree -m '' $temp:folder1) $(git commit-tree -m '' $temp:folder2)
)
为了更好地控制您正在使用的内容,您可以将 git ls-files
与您想要的任何路径规范一起传递给 git update-index --add --stdin
.
关于git - 如何忽略 git diff --no-index 上的目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34776768/