在 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
下有两个分支 main
和 assets
,您可以在 assets
分支下同样地 link 图像:
# README.md
![Image from another branch](https://cdn.jsdelivr.net/gh/username/repo@assets/screenshot.png)
但是,这在本地不起作用。
更新:这是这个问题的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
下有两个分支 main
和 assets
,您可以在 assets
分支下同样地 link 图像:
# README.md
![Image from another branch](https://cdn.jsdelivr.net/gh/username/repo@assets/screenshot.png)
但是,这在本地不起作用。