Git找回回滚后的内容和删除的文件

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点

如果我已经执行了git reset --hard XXX,之前的commit的内容还能找回来吗?

首先,经过之前的学习,我们起码知道,执行完 reset回滚commit以后,之前的commit其实没有被删除,肯定还在的。

要找回之前的 commit 的内容,那我们势必得知道对应的commit 的SHA-1值吧,这个时候用git log是看不到的。

之前我们曾经提到过,就是 .git目录下有一个 logs 目录,里面记录了所有HEAD改变的记录,包括分支操作(新建、切换等),commit操作(新commit,reset等)。那我们之前 reset 也是更改了HEAD,所以这里面肯定会有我们的记录。可以用下面的方法拿到:

//是的,你没看错,加个 -g 参数就看得到了
git log -g
//或者是下面的命令
git reflog

拿到之前的 commit信息之后,我们就能找回对应的提交记录了

//可以新建一个分支指向对应的提交
git branch branchName commitId
找回删除的文件

上面 撤销add 一节中我们用的命令并不会删除工作目录中的文件,但是万一你一不小心漏掉了 --cached 参数,那效果就不一样了,会把工作目录和暂存区中的文件记录都会删除。

可以从垃圾桶里面还原出来吗?

rm 这个命令是linux命令,文件一旦通过 rm 命令删除,则无法恢复。比如:

//这样执行删除,new.txt不会出现在垃圾桶
rm new.txt

要想知道删除的文件能不能找回来,我们先得明白我们的文件信息存在于哪些地方。主要是3个:

  • 工作目录
  • 暂存区也可能有,如果之前 add 过,并且没有做过删除暂存区的操作的话
  • commit信息中,这里如果之前提交过则肯定是有的,而且一般是删除不掉的

如果我们前面是通过上面的 rm 命令删除了工作目录的文件,那我们可以从暂存区里面把文件恢复出来:

git checkout -- new.txt

如果我们是一开头的那种情况,用 git rm 命令,就会把暂存区和工作区都删除了,那还可以从最近的 commit 中恢复(当然前提是你之前已经提交过了):

git checkout HEAD readme.txt

所以综上,还是推荐大家尽量不要用带有 rm 的命令,撤销 add 操作用 reset 命令。

reset 命令操作的都是跟 commit 相关的,比如把分支重置到某次 commit,把某些文件重置到某次 commit对应的文件版本等。

同时,如果不知道怎么操作,可以用 git status 命令,它会提示一些操作:

//在 add 之后执行
git status
//输出
On branch master
Changes to be committed:
	//这句就是提示我们,如果后悔add了,可以用下面的 reset命令
  (use "git reset HEAD <file>..." to unstage)

	modified:   myTest.txt


欢迎关注我的公众号AntDream查看更多精彩文章!
AntDream

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回滚单个文件,可以按照以下步骤进行操作: 1. 使用命令git checkout -- <文件名>,其中<文件名>是你想要回滚文件的名称。这将撤销对该文件的所有未提交的更改并将其恢复到最近的提交状态。 2. 如果你只是想撤销对文件的更改但不想删除文件,你可以使用git checkout HEAD -- <文件名>。这将还原文件到最近一次提交的状态。 3. 如果你想要彻底删除文件并取消git的跟踪,你可以使用git rm <文件名>命令,然后进行提交。这将从版本库中删除文件,并且git将停止跟踪该文件。 请注意,这些操作都会直接修改你的本地仓库。如果你想将更改推送到远程仓库,你需要使用git push命令将更改推送到远程仓库。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [git 回滚操作](https://blog.csdn.net/u014659004/article/details/127155950)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [git单个文件回滚](https://blog.csdn.net/weixin_43232423/article/details/124829440)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值