Git中如何将master分支移动至当前HEAD的位置?
将本地master分支移动到当前HEAD指向提交的操作步骤
你当前的分支指向状态如下:
2441dc3 (HEAD) Made backend route for student attendance 2b27490 Made storage to localstorage from the classname 577bd81 (origin/master, master) Made attendace UI working though there are some errors
从提交链可以看到,当前HEAD所在的2441dc3比本地master当前指向的577bd81领先2个提交,要把master移到当前HEAD的位置,可以选下面两种不会丢提交的操作方式:
- 方式1:直接强制移动master指针(不需要切当前所在分支)
执行命令:git branch -f master HEAD
命令逻辑:git branch -f会强制更新指定分支的指向,不受分支当前所在位置的限制- 命令里的
master是要移动的目标分支,HEAD是指针移动的目的地,也就是当前HEAD待着的2441dc3提交
这个操作不会改动你工作区的代码文件,也不会影响当前HEAD的附着状态,执行完master的指针就直接指向2441dc3了。
- 方式2:切到master分支后用快进合并对齐指针
- 切到master分支:
git checkout master - 执行快进合并对齐指针:
git merge --ff-only HEAD
这里加--ff-only参数,是为了只有在能直接移动指针完成对齐的时候才执行操作,不会生成没用的合并提交,刚好匹配你“把master移到当前HEAD位置”的需求。
- 切到master分支:
补充提示:
- 上面的操作只会改你本地的master分支指向,要是想把这个状态同步到远程的origin/master,操作完之后得执行
git push origin master --force。毕竟远程的origin/master现在还停在577bd81的位置,普通push会因为提交链对不上被拦下来。- 操作之前可以先跑一下
git rev-parse HEAD,确认当前HEAD对应的提交哈希是2441dc3,别因为指针错位把分支移到错的提交位置上。
内容的提问来源于stack exchange,提问作者Upendra Dhamala
相关产品推荐
相关产品推荐

