【Git】文件操作 - 误删除
情况一:文件已经commit,不小心在资源管理器中删除了该文件
▼bash复制代码git restore 文件名
情况二:(reset)不仅在资源管理器中删除了,还将删除操作提交了
解决办法:reset(重置),即恢复到上一个版本
▼bash复制代码git reset [option] [commitId]
option 参数的选项有以下几种
git reset --mixed:此为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本, 只保留源码,回退commit和add信息git reset --soft:回退到某个版本, 只回退了commit的信息 。如果还要提交,直接commit即可git reset --hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容,慎用!
git reset --hard 39829c0
回车之后可以发现文件已经恢复了,此时再查看日志,它将我们的提交过程丢失了:
情况三:(revert)如果又想要恢复文件,又不想让提交过程丢失
git revert 版本号,这个版本号是恢复到哪个提交之前
- revert 与 reset 的作用一样,都是恢复版本,但是他们两者的实现方式不同。
- 简单来说 reset 是直接恢复到上一个提交,工作区的代码自然也恢复到上一次提交的代码;而 revert 是新增一个提交,但是这个提交是使用上一次的代码。
- 因此,他两恢复后的代码是一致的,区别是一个新增提交(revert),一个是回退提交(reset)
- 正因为 revert 永远是在新增提交,因此本地仓库版本永远不可能落后于远程仓库,可以直接推送到远程仓库,故而解决了 reset 之后需要加 -f 参数的问题,提高了安全性。

如果需要远程仓库也回退,可以使用“git push -f -u origin master”强制推送到远程仓库。
--amend
git reset 还提供了恢复到上一次提交的快捷方式:
▼bash复制代码git reset --soft HEAD~1 # 只回退了 commit add的操作还在
其实平日开发中最多的误操作是这样:刚刚提交完,突然发现了问题,比如提交信息没写好,或者代码更改有遗漏,这时需要撤回到上次提交,修改代码,然后重新提交。
这个流程大致是这样的:
▼bash复制代码# 1. 回退到上次提交 $ git reset HEAD^ # 2. 修改代码... ... # 3. 加入暂存 $ git add . # 4. 重新提交 $ git commit -m 'fix: ***'
针对这个流程,git 还提供了一个更便捷的方法:
▼bash复制代码git commit --amend
这个命令会直接修改当前的提交信息。如果代码有更改,先执行 git add,然后再执行这个命令,比上述的流程更快捷更方便。
评论
问答助学
相关内容
0个评论
全部评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
