Git切换到历史commit修改提交后切走,无法回到对应最新提交如何解决
问题原因
你之前执行git checkout 具体提交哈希的操作会让Git进入分离HEAD状态,此时你后续做的所有提交都不会关联到任何本地分支,仅挂载在临时的HEAD指针上。当你切换到dev分支后,这些临时提交就会从分支视图中隐藏,切回task分支自然看不到新提交记录。
解决步骤
第一步:找到丢失的提交哈希
执行命令查看Git操作日志,找到你刚才提交的记录:
git reflog
返回结果会按时间倒序展示所有Git操作记录,找到commit信息为message的那一行,记录最前面的7位或完整提交哈希值,记为新提交哈希。
第二步:将提交合并到task分支
有两种常用方案可选:
方案1:把丢失的提交直接合并到当前task分支(适用于切换到旧提交后task分支有其他新增提交的场景)
先切换到task分支:git checkout task执行cherry-pick把丢失的提交移过来:
git cherry-pick 新提交哈希操作完成后你的新提交就会出现在task分支的提交记录中。
方案2:直接将task分支指针移动到新提交上(适用于切换到旧提交后task分支没有其他新提交的场景)
先切换到task分支:git checkout task执行重置命令:
git reset --hard 新提交哈希注意:该操作会覆盖task分支上你切换到旧提交之后新增的所有内容,确认task分支没有其他未保存的修改再执行。
避坑提示
后续如果需要在旧提交上做修改并更新到原有分支,建议直接在对应分支上执行git reset 旧提交哈希或者git revert操作,避免进入分离HEAD状态导致提交丢失。
内容的提问来源于stack exchange,提问作者AnorLondo
相关产品推荐
相关产品推荐

