在 GitHub 和本地显示存储在不同分支中的 GitHub README 屏幕截图

Display GitHub README screenshot stored in a different branch, both on GitHub and locally

更新:这是这个问题的GitHub test repository

我将屏幕截图 (screenshot.png) 存储在单独的 Git 分支 (assets) 中,用于 README.md 文件(在 master分支)。

要在 GitHub 上查看图像,我必须 link 至:

/../assets/screenshot.png

../assets/screenshot.png

但是,在本地查看README文件时,这不起作用,图像不显示(例如在VS Code或Atom中使用Markdown预览功能时)。

我什至使用了 git worktree 功能,检查 assets 分支 assets 子目录:

git worktree add -B assets assets origin/assets

所以目录结构是这样的:

.git
assets
assets/screenshot.png
README.md

这意味着,为了在本地查看 README 文件中的图像,我必须 link 到

/assets/screenshot.png

assets/screenshot.png

我怎样才能协调这两者 "worlds"?

有没有办法link截图一直显示,"whether I view the documentation on GitHub itself, or locally, using a different markup renderer"*?

不,这是不可能的,你不应该期望它。

您应该将 assets 文件夹作为主分支的一部分,或者您应该将两者分开到不同的存储库中,或者类似的东西。

GitHub 提供此屏幕截图是有充分理由的,但 "good reason" 只是与 GitHub 如何提供您存储库中的内容相关的技术原因。

让我们看看您的屏幕截图 URL,它在您的主存储库页面中提供的 HTML 中使用:

https://raw.githubusercontent.com/devliber/ReadmeScreenshotBranch/assets/screenshot.png

如您所见,带有图像的分支名称是 URL 的一部分。让我们尝试将 URL 破解回您的自述文件:

https://raw.githubusercontent.com/devliber/ReadmeScreenshotBranch/master/README.md

如果你尝试这个 URL 你会看到它显示了你的 README 文件。

所以这里的问题是你"hack"从另一个分支获取屏幕截图是你得到这个URL:

https://raw.githubusercontent.com/devliber/ReadmeScreenshotBranch/master/../assets/screenshot.png

这与我在此处发布的第一个 URL 完全相同,这就是您看到该图片的原因。

但是,如果您签出分支 X,那么您不应期望分支 Y 的任何内容出现在您的工作文件夹中。它 "works" 在 GitHub 上,因为它们从您的分支机构提供内容的方式,但它不会,并且 不应该 在本地工作,除非您开始检查使用工作树创建多个分支。

如果您不介意使用外部服务,可以使用 jsDelivr 在不同的分支上显示图像。

例如,如果您在 username/repo 下有两个分支 mainassets,您可以在 assets 分支下同样地 link 图像:

# README.md

![Image from another branch](https://cdn.jsdelivr.net/gh/username/repo@assets/screenshot.png)

但是,这在本地不起作用。