如何回到Git历史提交版本并保留未提交文件的修改?
保留未提交修改并回退到历史提交的Git操作方法
方法一:暂存修改后切换提交(最稳妥,适用于所有场景)
当不确定工作区改动和目标提交是否存在冲突时,优先使用该方法:
暂存当前未提交的所有修改
把工作区的改动临时保存到Git的暂存栈,避免切换提交时被覆盖:git stash push -m "暂存工作区未提交修改"(
-m参数用于给暂存记录添加备注,方便后续识别;无需备注时直接执行git stash即可)切换到目标历史提交
通过git log --oneline查看目标提交的哈希值(通常取前7位即可),执行切换命令:git checkout <目标提交哈希>例如目标提交哈希为
a1b2c3,则执行git checkout a1b2c3恢复暂存的修改
将之前暂存的改动恢复到当前工作区:git stash pop(
pop会在恢复后删除暂存栈中的对应记录;若想保留暂存记录,改用git stash apply)
方法二:直接切换提交并保留工作区改动(适用于无冲突场景)
若能确定工作区的改动和目标提交的版本无冲突(比如仅修改了某个文件,且该文件在目标提交后未被其他提交改动),可直接执行切换命令,Git会自动保留未提交的修改:
git checkout <目标提交哈希>
执行后Git会检查改动是否会被覆盖,若无冲突则直接切换到目标提交;若存在冲突,Git会拒绝执行并提示处理改动,此时需改用方法一。
额外说明
- 若想回退到目标提交后基于该提交重新工作,可使用
git reset --soft <目标提交哈希>,该命令会将HEAD移动到目标提交,同时保留暂存区和工作区的改动。注意:此命令会修改当前分支的历史,若分支已推送到远程仓库需谨慎操作。 - 查看历史提交详情用
git log,查看简洁版提交记录用git log --oneline
内容的提问来源于stack exchange,提问作者user19712456
相关产品推荐
相关产品推荐

