如何用git reset同步上游master?多设备提交回退至最新master操作指南
解决跨设备Git提交回滚与上游分支同步问题
这种多设备同步代码后发现提交不符合预期的场景我碰到过好多次,别慌,按下面的步骤操作就能搞定:
设备B上丢弃错误提交并同步设备A的最新master
先确保工作区干净
首先检查当前有没有未提交的改动,避免重置时丢失重要内容:git status如果有未提交的文件,先把它们暂存起来(之后可以用
git stash pop恢复):git stash拉取设备A的最新master代码
先确认设备B已经添加了设备A作为远程仓库(如果没加过的话):# 查看现有远程仓库 git remote -v # 添加设备A的远程,替换成设备A仓库的实际路径(本地路径/SSH地址都可以) git remote add deviceA /path/to/deviceA/repo.git然后拉取设备A master分支的最新代码:
git fetch deviceA master重置本地分支到设备A的最新状态
用硬重置命令直接让本地master分支完全对齐设备A的master,同时覆盖工作区和暂存区的内容(这一步会丢弃本地那个不符合预期的提交):git reset --hard deviceA/master注意:
--hard参数会直接清除工作区和暂存区的所有改动,所以一定要确保这些改动是你不需要的,或者已经用git stash保存好了。
通用:通过git reset同步上游master分支的方法
如果你的代码托管在远程平台(比如GitHub/GitLab),要同步上游官方的master分支,步骤类似:
拉取上游最新代码
先获取远程master分支的最新版本(不会影响本地代码,只是把远程数据拉到本地):git fetch origin master这里的
origin是默认的远程仓库名,如果你的上游叫别的名字,替换成对应的名称即可。强制同步本地分支
把本地master分支重置到上游master的最新提交,同步工作区和暂存区:git reset --hard origin/master
重要提醒
- 如果你的本地分支已经推送到了共享远程仓库,并且这个分支有其他开发者在使用,不要轻易用
git push --force来推送重置后的分支,这会覆盖远程的提交历史,给其他开发者造成麻烦。只有在确定没人依赖这个分支的历史时,再考虑强制推送。 - 每次用
--hard重置前,务必用git status检查工作区状态,避免丢失未保存的工作。
内容的提问来源于stack exchange,提问作者Sharon Chai
相关产品推荐
相关产品推荐

