【问题标题】:Does a git branch have a corresponding Linux shell absolute file path? [duplicate]git 分支是否有对应的 Linux shell 绝对文件路径? [复制]
【发布时间】:2018-07-25 15:36:19
【问题描述】:

我有两个分支:master 和 working。我目前在工作分支上,但我想引用一个仅存在于主分支中的文件,而不检查该分支。是否有一些 shell 语法可以让我在分支 master 中引用该文件?

例如:

$ some-tool git:master!some-file.txt

【问题讨论】:

  • 没有。但是有一个 git 命令可以做到这一点。见here
  • some-tool 是一个对 git 一无所知的通用 Linux 工具,还是您在问如何在特定于 git 的工具中做这样的参考?
  • some-tool 是一个通用的 Linux 工具,可能是我写的一个 shell 脚本。

标签: bash git shell


【解决方案1】:

不,但使用process substitution,您可以生成与附加到任意命令输出的 FIFO 对应的路径。因此,如果“任意命令”从 git 中检索您的文件(并且您的工具可以从 FIFO 中读取而不需要可查找的文件),那么您就可以了。

some-tool <(git show master:some-file.txt)

【讨论】:

    【解决方案2】:

    如果您使用的是 bash 或其他支持进程替换的 shell,则应该可以:

    $ some-tool <(git show <BRANCH>:<PATH_FROM_GITROOT>)
    

    &lt;()/dev/fd 中创建文件句柄或根据实现创建命​​名管道,其中包含子命令 AFAIK 的内容。

    【讨论】:

    • 嘿。相隔 14 秒。顺便说一句,这是从 ksh 借来的 bash 功能,所以虽然它在 POSIX sh 中不可用,但也不是 bash-only。
    • ...顺便说一句,虽然/dev/fd 是它在 Linux 上的工作方式,但在内核不提供该功能的平台上编译时,bash 将改用命名管道。
    • 不知道这不仅仅是 bash,我知道 zsh 有自己不同的等价物,所以我只是假设它是一种 bashism。也不知道您可以从中获得命名管道,将更新答案。
    • 感谢@Carey
    猜你喜欢
    • 2011-08-31
    • 1970-01-01
    • 2012-05-09
    • 2013-12-10
    • 2014-06-27
    • 2017-10-22
    • 2021-05-19
    • 1970-01-01
    • 2021-02-06
    相关资源
    最近更新 更多