git - 如何忽略 git diff --no-index 上的目录?

标签 git git-diff

我正在尝试在同一存储库中的两个文件夹之间创建彩色差异(这可能是完全错误的方法)。

我相信实现这一目标的一种方法是通过 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/

相关文章:

linux - 如何使 diffstat 计数已删除和新添加的文件到 LOC 计数?

git - 如何更改 git diff 中的制表符宽度?

git - 当我执行 "git diff"时如何获得并排差异?

git - 如何在 github 中比较/区分 master 和 fork repo 的特定版本

windows - Git diff 在子模块中不起作用

git:重写历史:重新排序和 merge 提交

git - 获取 repo 的最新标签

git clone over https 401 错误,不要求输入用户名或密码

git - 如何 "unrevert"以前还原的提交?

git 查看两个任意分支之间的提交计数差异