Git如何将项目指定文件夹内容设置为与目标分支完全一致
解决方案
操作前请确保你本地工作区的未提交变更已经通过git stash暂存或者提前提交,避免意外丢失代码。
- 第一步:拉取最新远端代码,确保你要同步的
feature/other分支版本为最新状态git fetch origin - 第二步:删除当前
feature/mine分支下的目标文件夹,彻底清理所有残留的多余文件# Linux/Mac 环境执行 rm -rf src/some-folder-I-dont-want-to-change # Windows CMD 环境执行 rmdir /s /q src\some-folder-I-dont-want-to-change # Windows PowerShell 环境执行 Remove-Item -Recurse -Force src/some-folder-I-dont-want-to-change - 第三步:从
feature/other分支拉取完整的对应文件夹内容
这里直接使用远端分支git checkout origin/feature/other -- src/some-folder-I-dont-want-to-changeorigin/feature/other拉取内容,可避免本地feature/other分支未更新导致的内容过时问题。 - 第四步:验证同步结果
执行git diff src/some-folder-I-dont-want-to-change,此时输出应为空,说明该文件夹内容已经和feature/other分支完全一致。 - 第五步:提交变更并推送到远端
推送完成后,你的PR中该文件夹的相关变更就会消失。git add src/some-folder-I-dont-want-to-change git commit -m "还原src/some-folder-I-dont-want-to-change文件夹与feature/other分支一致" git push
高版本Git简化方案
如果你使用的是Git 2.23及以上版本,可以跳过手动删除步骤,直接用git restore命令一键完成全量同步:
git restore --source=origin/feature/other --staged --worktree -- src/some-folder-I-dont-want-to-change
该命令会同时覆盖工作区和暂存区的对应文件夹内容,自动删除目标分支不存在的多余文件。
内容的提问来源于stack exchange,提问作者Teresa
相关产品推荐
相关产品推荐

