Git分支间选择性推送内容咨询:main与obsidian-vault分支操作
选择性迁移obsidian-vault分支的Publish文件夹到main分支方案
方案一:直接检出指定文件夹(单次迁移首选)
操作简单,适合临时或单次迁移需求:
- 拉取最新仓库数据:
git fetch origin - 切换到main分支:
git checkout main - 从obsidian-vault分支检出Publish文件夹内容到当前分支:
# 迁移最新版本的Publish文件夹 git checkout origin/obsidian-vault -- Publish/ # 若需迁移特定提交版本的Publish文件夹,替换<commit-hash>为目标提交哈希 git checkout <commit-hash> -- Publish/ - 检查变更:
git status,确认是需要迁移的内容 - 提交并推送:
git add Publish/ git commit -m "迁移obsidian-vault分支的Publish文件夹内容" git push origin main
方案二:使用git subtree(长期同步首选)
适合需要长期维护Publish文件夹同步的场景,能保留该文件夹的独立提交历史:
- 切换到obsidian-vault分支:
git checkout obsidian-vault - 将Publish文件夹拆分为临时分支:
git subtree split --prefix=Publish/ -b publish-temp - 切换回main分支:
git checkout main - 合并临时分支到main的指定目录:
# 合并到main的Publish目录 git subtree merge --prefix=Publish/ publish-temp # 若需合并到main的其他目录(如content/posts) git subtree merge --prefix=content/posts/ publish-temp - 提交合并结果并推送,之后可删除临时分支:
git branch -D publish-temp
方案三:修正git cherry-pick操作(精确迁移特定提交)
之前cherry-pick出错大概率是因为未限定路径,导致全量提交冲突,按以下步骤操作:
- 在obsidian-vault分支筛选涉及Publish文件夹的提交:
git log --oneline -- Publish/ - 切换到main分支:
git checkout main - 针对每个目标提交,仅应用Publish文件夹的变更:
# 只cherry-pick该提交中Publish文件夹的变更 git cherry-pick <commit-hash> -- Publish/ - 若遇冲突,手动解决冲突文件后,执行
git cherry-pick --continue;若放弃操作,执行git cherry-pick --abort - 提交并推送变更到main分支
内容的提问来源于stack exchange,提问作者Tai Alt
相关产品推荐
相关产品推荐

