执行git pull master时如何保留本地分支已提交文件不被覆盖?
操作步骤
确认本地状态:先执行
git status确保你的本地分支所有修改都已提交,工作区处于干净状态(你提到已提交,这步做二次确认即可)。拉取远程master最新代码
- 方式一(切换分支拉取):
- 切到本地master分支:
git checkout master - 拉取远程master的最新更新:
git pull origin master - 切回你的工作分支:
git checkout 你的分支名称
- 切到本地master分支:
- 方式二(无需切换分支):
- 直接拉取远程所有分支的最新状态:
git fetch origin
- 直接拉取远程所有分支的最新状态:
- 方式一(切换分支拉取):
合并master到本地分支
- 如果用了方式一,执行:
git merge master - 如果用了方式二,执行:
git merge origin/master
执行后Git会检测到冲突——因为master删除了文件但你的分支保留了对应内容。
- 如果用了方式一,执行:
解决冲突并保留本地文件
- 对于那些被master删除但你需要保留的文件,执行
git add 文件名,告诉Git你要保留该文件的本地版本。 - 所有冲突处理完成后,提交合并结果:
git commit(Git会自动生成合并提交信息,直接保存退出编辑器即可)。
- 对于那些被master删除但你需要保留的文件,执行
推送更新到远程
- 最后把合并后的本地分支推送到远程:
git push origin 你的分支名称
- 最后把合并后的本地分支推送到远程:
可选:用Rebase替代Merge
如果你偏好线性提交历史,可以用rebase操作:
- 执行
git rebase origin/master(前提已经fetch过远程master) - 遇到冲突时,同样用
git add 文件名标记保留本地文件,然后执行git rebase --continue - 重复直到rebase完成,最后推送:
git push origin 你的分支名称 --force-with-lease(注意:rebase后推送需要强制推送,但--force-with-lease比直接--force更安全)
内容的提问来源于stack exchange,提问作者Daywison Ferreira Leal
相关产品推荐
相关产品推荐

