在 master 分支上进行了 commit 但还没有 push,怎么安全地切到新分支并保留这些更改
-
确保你的 commit 确实没有 push(否则会覆盖远程分支):
git log --oneline # 查看本地 commit git log --oneline origin/master # 查看远程 master 的 commit
确保你的 commit 只存在于本地,远程
origin/master
没有这些 commit。 -
重置
master
分支到远程最新状态(丢弃本地 commit):git fetch origin # 确保获取远程最新状态 git reset --hard origin/master # 强制回退到远程 master
⚠️ 注意:
--hard
会丢弃所有未提交的更改和未 push 的 commit,确保你不需要它们! -
如果你想保留这些 commit,但移到新分支(推荐更安全的方式):
git checkout -b new-branch # 基于当前 commit 创建新分支 git checkout master # 切回 master git reset --hard origin/master # 重置 master 到远程状态
这样 commit 会保留在
new-branch
,而master
恢复干净。
总结:
-
如果想彻底丢弃 commit →
git reset --hard origin/master
-
如果想保留 commit → 先切新分支 (
git checkout -b new-branch
),再重置master
这样既不会丢失代码,又能让 master
保持干净。