Git切换到历史commit提交后推送到master提示已为最新如何处理
问题原因
你执行git checkout 573789f3时进入了*分离头指针(detached HEAD)*状态,后续新提交的内容是挂载在临时的头指针上,并未绑定到master分支,因此本地master分支的指向始终没有变化,推送时自然会提示Everything up-to-date。
操作步骤
情况1:当前仍停留在刚才提交完成的分离头指针状态
- 将本地master分支的指向强制更新为当前最新提交:
git branch -f master HEAD
- 切换到master分支验证指向是否正确:
git checkout master
- 强制推送本地master到远程仓库(确认不需要保留远程master上
573789f3之后的所有提交再执行):
git push -f origin master
情况2:已经离开分离头指针状态,找不到刚提交的记录
- 执行reflog查找刚才提交的哈希值:
git reflog
- 找到对应
commit -m "message"操作的哈希值,假设为abc1234,执行分支指向更新:
git branch -f master abc1234
- 后续重复情况1的步骤2、3即可。
警告:强制推送会完全覆盖远程master分支的现有提交记录,操作前请确认团队其他成员没有基于原远程master提交过新内容,否则会造成他人提交丢失、后续合并冲突等问题。
内容的提问来源于stack exchange,提问作者Girish Garg
相关产品推荐
相关产品推荐

