代码之家  ›  专栏  ›  技术社区  ›  Tom Lianza

“git diff”什么都不做

  •  82
  • Tom Lianza  · 技术社区  · 15 年前

    我想这是某个地方的配置错误,但我不知道在哪里。常规的git命令似乎工作正常,但“git diff”什么也不做。为了安全起见,我从.gitconfig文件中删除了外部diff工具。这是通过MacPorts安装的,是最新版本(1.7.2.2)。

    我看到的是,当我从工作区运行“git diff”时,它只是退出,什么也不做。

    $ git --version
    git version 1.7.2.2
    $ git diff
    $ 
    

    如果我从根工作区备份一个目录,键入“git diff”会得到以下结果:

    $ git diff
    usage: git diff [--no-index] <path> <path>
    

    这可能是预期的行为,因为我不在git存储库下。

    有什么办法解决这个问题吗?

    5 回复  |  直到 13 年前
        1
  •  117
  •   Arslan Ali    11 年前

    的默认输出 git diff

    git差异[--选项][--][]

    此窗体用于查看相对于索引所做的更改(下一次提交的暂存区域)。换言之,不同之处在于 能够

    看到了吗 documentation 更多细节。特别是,向下滚动到示例,阅读本节:

    $ git diff            # (1)
    $ git diff --cached   # (2)
    $ git diff HEAD       # (3)
    
    1. 将工作副本与索引区分开来
    2. 用头区分索引
    3. 将工作副本与头部区分开来

    在您的工作区之外,正如您所猜测的,git不知道要区分什么,因此您必须显式地指定两个要比较的路径,从而得到用法消息。

        2
  •  4
  •   VonC    12 年前

    注: starting git 1.8.5 or 1.9, Q4 2013 :

    当用户键入“ git diff " ,认为他在其中,当前的错误消息是一行:

    usage: git diff --no-index <path> <path>
    

    可能不足以让他意识到错误。

    “添加” Not a git repository “当我们掉入 --no-index “没有显式命令行选项来指示我们这样做的模式。


    请参见:

    “澄清文件” diff --no-index ".
    声明不在存储库中时, --无索引 是隐含的,两个参数是 强制性的。

    diff-no-index 通知用户CWD不在存储库中,因此必须有两个参数。

    To compare two paths outside a working tree:
    usage: git diff --no-index <path> <path>
    
        3
  •  2
  •   Jaanus    15 年前

        4
  •  1
  •   jweyrich    15 年前

    如果您在真实的存储库或工作副本之外使用它,它的行为与GNU diff相同,因此您需要通知要比较的两个目录或文件。例子:

    git diff old_dir new_dir

    如果它们之间有任何差异,输出将如预期的那样显示给您。

        5
  •  0
  •   deFreitas    10 年前

    $ git difftool HEAD HEAD^ -- path/that-not-exists
    

    什么都没发生