Ruby on Rails环境下Git未提交分支回退至master的操作咨询
关于Git分支恢复与删除的解决方案
咱们先直接回答你的核心问题:直接执行git checkout master再git branch -d user-micropost不能完全实现你的需求——这个操作确实会删除user-micropost分支,但那些没提交的本地更改(你创建/修改的文件、数据库迁移操作)会原封不动留在本地工作区,并不会回退到GitHub当前的代码状态。
下面给你梳理正确的操作步骤,帮你彻底回到干净的master分支状态:
第一步:切换回master分支
先执行这个命令切换到主分支:
git checkout master
这时候你会发现,之前在user-micropost分支里改的文件、新建的文件还在本地——Git不会自动丢弃未提交的内容,这也是为什么直接删分支没用的原因。
第二步:彻底清除本地未提交的更改
如果你确定要完全回到GitHub上master分支的最新状态,需要分两步清理:
- 恢复已跟踪文件的原始状态(就是你修改过的那些原本就存在的文件):
这个命令会把所有已被Git跟踪的文件,强制恢复到当前master分支最新提交的状态,所有本地修改都会被丢弃。git reset --hard HEAD - 删除未跟踪的新增文件/目录(比如你新建的迁移文件、其他新创建的文件):
git clean -fd-f是强制删除,-d会连带删除未跟踪的目录,执行后所有Git没记录过的新内容都会被彻底删掉。
⚠️ 重要提醒:这两个命令都是不可逆的!执行前一定要确认你再也不需要这些本地更改了,别误删重要内容。
第三步:删除无用的分支
现在本地工作区已经和GitHub的master分支完全一致了,再删除user-micropost分支:
git branch -d user-micropost
如果Git提示你这个分支没有被合并过,没法用-d删除,直接用大写的D强制删除就行:
git branch -D user-micropost
反正你本来就不需要这个分支里的内容,强制删除完全没问题。
额外补充:回到分支创建前的状态
其实分支创建前的状态,就是master分支当时的状态。如果你之前没更新过本地master,建议先执行git pull origin master把本地master同步到GitHub的最新状态,再按上面的步骤操作,就能完美回到分支创建前的干净状态啦。
内容的提问来源于stack exchange,提问作者Alvaro Alamillo Vargas
相关产品推荐
相关产品推荐

