【问题标题】:Git Directory Diff does not work in my submoduleGit Directory Diff 在我的子模块中不起作用
【发布时间】:2014-03-04 14:14:58
【问题描述】:

我正在使用 Git 1.8.4 和 Linux (Kubuntu 13.10)。

我有一个带有子模块的 Git 存储库。如果我在主 Git 模块中询问目录差异,它工作正常。如果我在其中一个子模块中执行相同操作,则会收到错误消息:

~/Projects/MAINMODULE/platform/SUBMODULE [master]$ git difftool -tool=meld --dir-diff --cached
  fatal: Could not switch to '../../../../platform/': No such file or directory
  diff --raw --no-abbrev -z --cached: command returned error: 128
~/Projects/MAINMODULE/platform/SUBMODULE [master]$ cd ..
~/Projects/MAINMODULE/platform [master]$ cd ..
~/Projects/MAINMODULE [master]$ git difftool -tool=meld --dir-diff --cached
  // NO PROBLEM, works.
~/Projects/MAINMODULE [master]$ git version
  git version 1.8.4

你有什么想法吗?可能是 Git 错误?

更新:1.8.5.3 产生相同的输出

【问题讨论】:

标签: git git-submodules git-diff meld


【解决方案1】:

此解决方法对我有用:

GIT_WORK_TREE="$(git rev-parse --show-toplevel)" GIT_DIR="$(git rev-parse --git-dir)" git difftool --tool=meld --dir-diff

您当然可以按照您的示例放入 --cached。

要输入的内容很多,因此您可以将以下别名添加到您的 ~/.gitconfig

[alias]
    submeld = !git --work-tree "$(git rev-parse --show-toplevel)" --git-dir "$(git rev-parse --git-dir)" difftool --tool=meld --dir-diff

【讨论】:

  • 我一有时间就试试。感谢您的回答。
猜你喜欢
  • 2014-08-29
  • 1970-01-01
  • 2022-10-20
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 2017-05-16
  • 2015-04-24
相关资源
最近更新 更多