如何基于本地未推送提交创建分支?master分支场景实操问询
基于本地未推送提交创建分支的解决方案
通用方法:从本地未推送提交创建新分支
如果你只是想基于当前分支的未推送提交创建新分支,操作非常简单:
- 直接创建并切换到新分支:
这条命令会让新分支继承当前分支的所有本地提交(包括未推送的),原分支的状态保持不变。git checkout -b your-new-branch-name - 或者分两步操作:
- 先创建新分支:
git branch your-new-branch-name - 再切换到新分支:
git checkout your-new-branch-name
- 先创建新分支:
针对你的具体场景:转移A、B提交到新分支
根据你描述的情况——远程master停在C节点,本地master有两个未推送提交B、A(HEAD指向A),要把这两个提交转移到新分支,让本地master回到C的状态,按以下步骤来:
创建包含A、B提交的新分支
先确保你在master分支(可以用git branch确认当前分支),然后执行:git checkout -b feature/my-new-branch # 分支名可自定义,用feature前缀是常见的项目惯例现在这个新分支就已经包含了A、B这两个提交,你可以用
git log查看确认提交链。回到master分支并重置到远程状态
切换回master分支:git checkout master然后把本地master重置到远程master的位置(也就是C节点):
git reset --hard origin/master这条命令会让本地master的HEAD直接指向远程的C节点,同时丢弃本地的A、B提交——但完全不用担心,因为这两个提交已经安全保存在新分支里了。
验证结果
- 查看master的提交日志:
git log,应该只能看到C及之前的提交记录; - 切换到新分支:
git checkout feature/my-new-branch,再看日志,就能看到C<-B<-A的完整提交链了。
- 查看master的提交日志:
重要提醒
git reset --hard是个比较“强硬”的命令,它会直接覆盖本地提交记录,还会丢弃未提交的工作内容。所以执行前务必:
- 确认A、B提交已经成功转移到新分支(可以在新分支用
git log验证); - 如果有未提交的改动,先用
git stash暂存起来,等重置完成后再用git stash pop恢复即可。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

