我正在使用静态页面生成器(例如 Hugo、Jekyll 等)。我的存储库中有静态页面生成器的源代码,还有生成页面时使用的内容。
我希望能够使用比源代码更新的版本内容来构建页面。因此,我克隆了包含分支 A 的存储库,但想使用分支 B 的内容来构建它。
<root>/
来自分支 A<root>/src
来自分支 A<root>/README.md
来自分支 A<root>/content
来自分支 B
一个重要的方面是,我需要与它们分支对应的所有内容的历史记录。有些文件<root>/content
存在于分支 A 和 B 上,但我只想要分支 B 的历史记录。
当有一个文件时<root>/content/blog/post-1.md
,我确实git log content/blog/post-1.md
应该只从分支 B 获取历史记录。
我尝试了很多方法,但都无法获得正确的历史记录。
git checkout origin/branch-b -- content
然后git log content/blog/post-1.md
显示分支 A 而不是分支 B 中的历史记录。git worktree add ../other content
ln -s ../other/content content
然后git log content/blog/post-1.md
显示分支 A 而不是分支 B 中的历史记录。Git 似乎不遵循符号链接。git subtree add --prefix=content content content
然后我收到错误fatal: prefix 'src/utils' already exists.
。当我删除此文件夹时,我最终可以添加子树,但它将具有来自分支 A 的历史记录。git log --follow origin/branch-b ...
可以是一个选项,但是我需要更改静态页面生成器的 git 集成。这取决于不支持的第三方插件--follow
。所以我正在寻找一个无缝解决方案。
也许反过来做会是个解决方案?克隆分支 B 并覆盖分支 A 中的所有内容,因为我不依赖分支 A 的历史记录?