如何检出/切换远程分支创建本地副本同时丢弃本地修改?
问题原因
Git 切换分支时默认会保留本地未提交的修改,如果待切换的目标分支上存在和本地修改文件同名的内容,就会触发报错,你收到的报错翻译如下:
错误:您对以下文件的本地修改会被检出操作覆盖:
my_local_file.txt
请在切换分支前提交或暂存这些修改。
如果你确认要直接丢弃当前分支的所有未提交修改,不需要暂存,可以用以下两种方案操作:
解决方案
方案1:单命令直接完成操作
直接在git switch命令中添加--discard-changes参数,即可跳过修改检查、直接丢弃当前未提交内容,同时创建并切换到和远程分支绑定的本地副本:
git switch --discard-changes -c fix/my_branch origin-http/fix/my_branch
方案2:先清理修改再切换分支
如果你需要先确认要丢弃的修改内容,可先执行清理命令,再运行你原本的切换命令:
- 第一步:永久丢弃当前工作区所有未提交的修改
git reset --hard HEAD - 第二步:创建并切换到对应远程分支的本地副本
git switch -c fix/my_branch origin-http/fix/my_branch
注意事项
- 上述两种方案都会永久删除当前分支的所有未提交修改,确认不需要保留这些修改后再执行操作
- 不要用
sudo执行普通Git操作,会修改本地仓库的文件权限,后续容易出现读写/同步报错 - 执行上述命令后,你创建的本地
fix/my_branch已经自动和远程origin-http/fix/my_branch绑定追踪关系,后续需要同步远程最新内容时,直接在该分支执行git pull即可。
内容的提问来源于stack exchange,提问作者KZiovas
相关产品推荐
相关产品推荐

