【问题标题】:How to git diff without typing the whole path如何在不输入整个路径的情况下进行 git diff
【发布时间】:2012-12-31 23:14:33
【问题描述】:

我正在使用 github windows shell,我将执行以下操作

git status

查看已修改文件的列表并想提醒自己发生了哪些变化。我必须输入类似的内容

git diff Source\FooBar\Pages\FooBar.aspx

这似乎需要输入很多字符。是否有一些更简单的工作流程来查看我没有看到的差异?

【问题讨论】:

  • 这将更好地服务于 SO,因为它处理编程工具/实现而不是概念/设计问题。请不要在那里重新询问,因为它可以迁移。一个很好的规则是,如果你的问题让你在你的 IDE 面前,它就属于 SO。如果它让你在白板前,它就属于程序员。
  • 您特别想避免什么?您想避免单独查看每个文件的差异吗?您想在不输入完整路径的情况下获取特定文件的差异吗?
  • 我特别想避免为我想要的每个文件输入完整路径git diff

标签: git github


【解决方案1】:
git diff -- **/FooBar.aspx

通常* 代表文件名的任何部分,而** 代表任何子路径。例如。 git diff -- **/main/**/*.aspx 将仅区分位于 mainmain 本身的子目录中某处的 aspx 文件。这适用于接受路径的其他命令,例如 commit 和 add。

【讨论】:

  • 在 Windows 上,这适用于提交和添加,但奇怪的是不适用于差异。它抱怨你需要使用'--'来分隔路径,即使你是。
  • 不幸的是,这不适用于我在 ubuntu 机器上的 zsh
【解决方案2】:

如果您想查看所有更改,只需使用git diff。但它不会列出新文件。

要选择性地查看更改,我建议使用 GUI,例如 git guigitk

【讨论】:

    【解决方案3】:

    我使用 Console2 来托管 bash。

    有了这个,我可以使用 Ctrl + 单击并拖动 来突出显示文本,然后可以将其复制到剪贴板并粘贴到其他命令行中。

    我用它来复制文件路径。

    这使我能够键入 git diff [Ctrl+V] 并获得我想要的命令行。

    【讨论】:

      【解决方案4】:

      大多数终端(例如 windows 的 console2)都有自动完成功能。

      开始输入并按tab

      通常 git 可以在 2 个字符后自动完成。喜欢:

      gi tabdi tab

      会给你git diff。如果您的文件夹命名不同,它可能会在单个字符后自动完成。就像你的项目根目录有三个文件:

      • 自述文件
      • /来源/
      • /bin/

      您可以简单地键入 rsb,然后按 Tab 键自动键入任何这些文件名。

      仅供参考, 自动完成终端和 git 命令、文件和目录名称、分支和标签名称的工作,但不幸的是,不适用于提交 ID。

      【讨论】:

      • 自动完成功能适用于 gi tab di tab 部分,但不适用于文件名部分。其中,当您的文件名通常像 Source\FooBar\Pages\FooBar.aspx 这样长时,使用起来真的很令人沮丧
      • 这完全不正确(在我使用的 windows msysgit 中)。我只是在一个开放的回购中尝试过。 gi tab di tab st tab c tab... 变成 git diff style/css/ 它会自动输入斜杠和所有内容。
      猜你喜欢
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 2017-08-08
      • 2021-10-04
      相关资源
      最近更新 更多