【问题标题】:View a file in a different Git branch without changing branches在不同的 Git 分支中查看文件而不更改分支
【发布时间】:2018-06-07 16:13:40
【问题描述】:

是否可以在不签出该分支的情况下在 git 分支中打开文件?怎么样?

基本上我希望能够在我的github pages 分支中打开一个文件,而无需一直切换分支。我不想修改它,只想查看它。

【问题讨论】:

  • 所有答案都忽略了您需要使用git showstackoverflow.com/questions/610208/…stackoverflow.com/questions/2364147/… 指定文件的完整路径的事实
  • 这些天,您可以使用git show a1b35:./file.txt 来使用相对路径。
  • @VonC - 谢天谢地分支感知选项卡完成:)
  • 更有趣的可能是显示差异git diff <other_branch> <path>
  • 上面的相关文件示例中带有“a1b35”,即分支名称——所以当然要放你自己的分支名称。

标签: git version-control branch git-branch


【解决方案1】:

这应该可行:

git show branch:file

branch 可以是任何引用(分支、标签、HEAD、...),file 是文件的完整路径。要导出它,您可以使用

git show branch:file > exported_file

你还应该看看VonC对一些相关问题的回答:

2015 年 1 月 19 日更新:

如今,您可以将相对路径与git show a1b35:./file.txt 结合使用。

【讨论】:

  • 您也可以在 vim 中弹出文件:git show branch:file | vim -(注意“|”管道和 vim 命令后的尾部破折号:vim -
  • @GregBurghardt 对我有用的是类似于vim -c "set syntax=html" -
  • 老实说,我希望我能不止一次地支持这个答案。
  • 这只显示本地分支,它不显示服务器上的所有分支
  • @FullDecent,我可以很好地使用origin/my_remote_branch。还是您的意思是实际的服务器版本?如果你想这样,你只需要先git fetch
【解决方案2】:
git show somebranch:path/to/your/file

您还可以处理多个文件并将它们连接起来:

git show branchA~10:fileA branchB^^:fileB

您不必提供文件的完整路径,可以接受相对路径,例如:

git show branchA~10:../src/hello.c

如果您想获取本地目录中的文件(仅还原一个文件),您可以签出:

git checkout somebranch^^^ -- path/to/file

【讨论】:

  • 对于 Windows 用户:这是 git bash for Windows 不知道规范化大小写和路径分隔符的少数几个地方之一。即您必须完全匹配大小写并使用 / 而不是 \ - 即使 cmd 的完成会尝试告诉您相反的情况。
【解决方案3】:

查看文件的简单、新手友好的方式: git gui browser <branch> 可让您探索任何文件的内容。

它也在git gui 的文件菜单中。大多数其他更高级的 GUI 包装器(Qgit、Egit 等)也提供浏览/打开文件。

【讨论】:

  • 这个命令的结果是“git: 'gui' 不是一个 git 命令。见 'git --help'。我是一个新手;这是怎么回事?
  • 它确实有效(令我惊讶),请参阅git-scm.com/docs/git-gui - 我使用 git 版本 2.5.2.windows.1
  • 这个答案很有帮助!谢谢。应该提到我在 Windows 上使用 git bash。
  • 是否可以将ranger用作git gui?
  • @ScottBiggs 您不是新手,您使用的是非标准设置。
【解决方案4】:

如果您使用的是 Emacs,您可以输入 C-x v ~M-x vc-revision-other-window 以查看您当前正在编辑的文件的不同版本(标签、分支和哈希都有效)。

【讨论】:

  • 有没有办法在 Vim 中得到这个? (我对插件持开放态度。)
【解决方案5】:

将以下内容添加到您的 ~/.gitconfig 文件中

[alias]
  cat = "!git show \"$1:$2\" #"

然后试试这个

git cat BRANCHNAME FILEPATH

我个人更喜欢不带冒号的单独参数。为什么?这个选择反映了checkout 命令的参数,我倾向于经常使用它,并且我发现它比show 命令的 bizarro 冒号分隔参数更容易记住。

【讨论】:

  • Bash 完成.git/config 保存后立即使用 git 别名,例如保存配置并尝试git cat ma[tab-tab] docke[tab-tab]。谢谢,@akuhn
猜你喜欢
  • 2021-07-02
  • 2015-10-02
  • 2019-09-16
  • 2012-02-03
  • 2017-06-26
  • 2022-11-02
相关资源
最近更新 更多