如何在保留my_dir目录内容的前提下使my_branch其余文件与master同步
Git 操作实现方案
操作步骤
该方案无需手动复制文件到临时目录,全程通过Git原生命令完成,比你预想的手动复制方案更高效且不易出错:
- 切换到
my_branch分支,确认工作区无未提交的变更,避免操作过程中丢失本地未保存的改动
git checkout my_branch git status # 如果存在未提交的改动,可先执行 git stash 暂存,操作完成后再执行 git stash pop 恢复
- 先将工作区所有文件同步为
master分支的最新版本,这一步会临时覆盖my_dir目录的内容
git checkout master -- .
- 恢复
my_branch分支上my_dir目录的所有历史改动
git checkout HEAD -- my_dir/
- 校验变更是否符合预期,确认非
my_dir的文件均和master一致,my_dir保留你自己的所有开发改动
git diff
- 确认无误后提交变更即可
git add . git commit -m "sync all files except my_dir with master, preserve my_dir changes"
注意事项
- 操作前可先给当前
my_branch打临时备份标签,操作出错可快速回滚:
# 打备份标签 git tag my_branch_backup_before_sync # 出错时回滚命令 git reset --hard my_branch_backup_before_sync
- 后续合并
master到my_branch时,可指定合并策略自动使用master的版本解决冲突,避免再次误改非开发目录:
git merge -X theirs master
该策略只会自动处理冲突的文件,不会覆盖你在my_dir的改动,因为my_dir无其他开发者修改,不会产生冲突
内容的提问来源于stack exchange,提问作者Vespene Gas
相关产品推荐
相关产品推荐

