You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:05:01