如何在Git中关联复制的文件夹,同步源文件夹的变更?
如何同步同源目录的Git变更
你要的这种“目录级fork后同步”Git本身没有原生自动机制,但可以通过手动合并策略实现,下面是两种实用方案:
方案一:用subtree合并策略同步变更
这种方法能直接把上游user1/folder1的变更合并到你的me/mywork目录,步骤如下:
先确保已添加主仓库为上游远程(如果还没加):
git remote add upstream <主仓库的Git地址>拉取上游仓库的最新代码:
git fetch upstream执行subtree合并,提取上游
user1/folder1的变更:git merge -X subtree=user1/folder1 upstream/main --no-commit将合并后的内容移动到
me/mywork目录,更新Git索引:git mv user1/folder1/* me/mywork/ # 若有隐藏文件,补充执行:git mv user1/folder1/.* me/mywork/解决可能出现的冲突,然后提交变更:
git add me/mywork/ git commit -m "同步user1/folder1的最新变更到me/mywork"
方案二:生成补丁并应用
如果觉得subtree合并太复杂,也可以用补丁方式同步:
拉取上游最新代码后,生成
user1/folder1的变更补丁:git diff upstream/main:user1/folder1 user1/folder1 > folder1_update.patch切换到你的工作目录,应用补丁:
cd me/mywork git apply ../../folder1_update.patch检查文件变更,解决冲突(如果有的话),然后提交:
git add . git commit -m "通过补丁同步user1/folder1的变更"
注意事项
- 两种方法都需要手动触发同步,Git不会自动监测目录间的同源关系并同步。
- 合并/应用补丁时若出现冲突,需手动修改冲突文件,标记解决后再提交。
- 当你要把
me/mywork合并回主仓库时,直接提交PR即可,主仓库合并后两个目录会共存,后续你依然可以用上述方法继续同步user1/folder1的变更到自己的目录。
内容的提问来源于stack exchange,提问作者Mau
相关产品推荐
相关产品推荐

