git版本切换修改删除的一些操作

1.版本回退
我们之前已经提交过了readme.txt,我们用vi再修改一次,再提交。
git log可以查看你的提交历史。如下:
在这里插入图片描述
其中,527344…那一长串数字就是你的版本号。

那么,如果我们想回到第一个版本怎么办呢?
可以使用:git reset --hard HEAD^
其中HEAD代表就是最新的版本,^就是上一个版本。我们再次使用git log查看一下:
在这里插入图片描述
在这里插入图片描述
并且我们发现文件内容已经是第一次的内容了。这个速度很快,其实内部有个指向HEAD的指针,回退只是把指针移动一下,然后工作区更新为指向的版本,所以看到readme更新了。

如果我们回退后后悔了,也是有办法恢复的。我们只需要用用git reflog查看命令历史,确定版本号,以便确定要回到未来的哪个版本。
git reset --hard 版本号
到此,我们已经知道,我们可以在过去和未来的版本任意穿梭,他们都是会保存的,不会丢失。

2.工作区和暂存区
这其实是一个很重要的概念。
工作区就是我们看见的learngit里面的文件readme.txt。而我们在learngit中会有一个.git隐藏目录,里面会有一个暂存区,和创建的唯一master和指向master的HEAD指针(类似于链表的形式)。
我们新建一个文件就是在工作区,git add其实就是把他们放入暂存区,git commit把他们从暂存区移入master中。这样我们就知道这两个操作的含义了,也知道版本回退后为什么文件内容改变了。因为工作区的内容就是HEAD指向的版本内容。

我们知道git管理的是修改,而不是文件。我们如果多次修改,必须先git add到暂存区,才能一次commit。否则修改是不会提交的。所以我们必须对每次修改都要add并commit,否则会丢失你的修改;

3、撤销修改
我们如果修改之后想要撤销修改,有什么办法呢?大家要注意,这和版本回退是不一样的。版本回退后原来的版本还是能够在master树上找到的。如果我们不想要别人看到写的东西,我们就需要撤销修改。
这又分为三种情况:
(1)文件修改后还没有add到暂存区,这时候我们只需要使用
git checkout --文件名就可以撤销修改。
(2)文件已经add到暂存区,但是还没有提交。要分为两步:首先
git reset HEAD 文件名,这个命令是把文件从暂存区的文件重新放回工作区,然后按照(1)git checkout --文件名就可以撤销修改。
(3) 如果文件已经提交了,只能把版本回退一下,不过这并不保险,因为你的commit id仍然是可以查到的,如果它又回到最新版本,还是会被发现的。

4、删除文件
我们要知道,git最大的特点就是跟踪修改,所以删除文件也是一种修改。只要文件已经提交到版本库了,永远不要担心误删,都是可以恢复的,只要知道版本号id,就可以回退到对应版本。
假设我们rm a.txt。我们把工作区的文件删除了,如果我们其实是误删,想要恢复。只需要git checkout – test.txt,就可以恢复最新的版本,这其实就是把版本库中的替代工作区了,无论是修改还是误删,都可以一键还原。

如果我们确实是想要把这个文件删掉,我们还需要git rm test.txt,从版本库中删除,git commit -m "remove test.txt"提交删除这个修改操作。
我们rm–add–commit和git rm—commit是一样的。

但最终,我们只需要回退一下,就可以恢复原来的文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值