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

如何在Git同步上游仓库(Fetch Upstream)时排除指定文件夹

嘿,这个需求我之前帮人处理过,刚好能给你一套靠谱的方案!你要保留snippets/frameworks/django/的自定义内容,同时同步上游其他所有更新,核心思路就是用Git的合并策略精准控制特定文件夹的版本,具体操作步骤如下:

1. 先确认上游仓库已添加(没加的话先补上)

首先得把上游源仓库关联到你的本地仓库,这样才能拉取它的更新:

# 替换成上游仓库的实际URL
git remote add upstream https://github.com/上游用户名/上游仓库名.git

# 验证关联是否成功,会显示upstream的fetch和push地址
git remote -v
2. 拉取上游的最新更新

先把上游的所有分支更新拉到本地,这一步不会直接修改你的本地代码,只是获取最新内容:

git fetch upstream
3. 分两步合并:先保护目标文件夹,再同步其余内容

这里是关键操作,我们要分两次合并,确保目标文件夹的自定义内容不被覆盖:

# 先切换到你的本地主分支(如果不在的话)
git checkout main

# 第一步:专门针对目标文件夹,使用ours策略合并,强制保留你的本地版本
git merge -X ours upstream/main -- snippets/frameworks/django/

# 第二步:正常合并上游的其余所有内容,该同步的同步
git merge upstream/main

解释下:第一条merge命令告诉Git,当snippets/frameworks/django/文件夹内出现冲突时,直接用你本地的自定义版本;第二条merge命令处理剩下的所有文件,按照正常的Git合并逻辑同步上游更新。

4. 处理非目标文件夹的冲突(如果有)

如果除了目标文件夹外,其他文件出现合并冲突,Git会提示你手动解决。解决完冲突后,执行以下命令标记冲突已处理:

git add <冲突文件名>
git commit
5. 推送到你的Fork仓库

最后把合并后的本地代码推送到你的远程Fork仓库即可:

git push origin main
省心技巧:长期自动保留目标文件夹

如果你不想每次同步都手动执行上面的merge命令,可以在仓库根目录创建一个.gitattributes文件,添加以下内容:

snippets/frameworks/django/ merge=ours

保存后,以后每次合并上游更新时,Git会自动对这个文件夹应用ours策略,直接保留你的自定义版本,省去重复操作。

内容的提问来源于stack exchange,提问作者Ali Aref

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:27:43