撤销暂存文件与任意切换文件版本-每天三分钟玩转Git (7)

简介: 撤销暂存文件与任意切换文件版本-每天三分钟玩转Git (7)

“ 产品说这个功能我们不要了。——编程三分钟”


4cf0fff31056e2d3631e3097e07c9218.jpg

第 7 篇


撤销暂存文件与任意切换文件版本

有时候我们想把暂存区的文件取出来。


一、暂存区到工作区


45fe5d007ae82017ec96e1eb7ad88adf.jpg


假如我们刚刚执行了git reset --soft或者add等的操作,把一些东西加到了我们的暂存区,比如日志文件,我们就要把他们从暂存区拿出来。



5f28d951cc426f66edd7e6ee76921584.jpg

git status 查看暂存区,里面有一个mysql.log被放进去了


git reset -- mysql.log把mysql.log取出来


git status可以看到真的取出来了 然后如果不要想这个文件的话再rm掉就好啦,但是如果这些文件每次自动生成都要用这种方式取出暂存区真的好累,我们可以用 git忽略不想提交的文件(后续技巧篇详细描述)


二、回滚文件到某个提交


当我们想要把某个文件任意的回滚到某次提交上,而不改变其他文件的状态我们要怎么做呢? 我们有两种情况,一种是,只是想在工作区有修改的文件,直接丢弃掉他现在的修改;第二种是想把这个文件回滚到以前的某一次提交。我们先来说第一种


1. 取消文件在工作区的修改



05f9e30ae4c63240bf97f8336fcf785b.jpg

cfecaf50b5110bb12f4123a445f79e45.jpg


更新time.txt的内容,可以status看到他发生了变化


git checkout -- time.txt , 取消这次在工作区的修改,如果他已经被add加到了暂存区,那么这个命令就没有用了,他的意思是取消本次在工作区的修改,去上一次保存的地方。如果没有add就回到和版本库一样的状态;如果已经加到了暂存区,又做了修改,那么就回加到暂存区后的状态


2. 将文件回滚到任意的版本


我们这里说的把文件回滚到以前的某个版本的状态,完整的含义是保持其他文件的内容不变,改变这个文件到以前的某个版本,然后修改到自己满意的样子和做下一次的提交。


核心命令

git checkout [<options>] [<branch>] -- <file>...


我们还是用time.txt这个文件来做试验,先搞三个版本出来,在这里我已经搞好了,来看看: 版本1,time.txt内容00:50


66f3ce14358b38915853e257b26ccdc0.jpg


版本2,time.txt内容18:51

48fa27a3104f04549c0f348d7395d3a3.jpg

版本3,time.txt内容10:41

80eb1397cd1b16444a5036b496a74826.jpg

现在的是版本1,我们把版本3检出试试。达到下图的状态


da089e268858f88c37fbe378a7f6b022.jpgbd56686e35f7ab190acf484cd1c4503d.jpg

  • 使用checkout+commit id+-- filename的组合,横跨版本2把历史版本3的time.txt搞出来了
  • 查看状态,time.txt被改变了


我们来把time.txt恢复到版本1,同样的方法,因为版本1是上一次提交我们可以省略掉版本号


1efd3d019c809dbb07ffdbab3f795102.jpg


5b9e326d76f37ddaa18cb9359d74b11b.png

看到了吧!只要用git checkout commit_id -- filename的组合,想搞出哪个文件历史版本就搞出哪个。


到了这里,你可能会很懵比,reset和checkout命令真的好像啊!都可以用来做撤消


checkout语义上是把什么东西取出来,所以此命令用于从历史提交(或者暂存区域)中拷贝文件到工作目录,也可用于切换分支。


reset语义上是重新设置,所以此命令把当前分支指向另一个位置,并且有选择的变动工作目录和索引。也用来在从历史仓库中复制文件到索引,而不动工作目录。


小小小小结


取出暂存区的文件:git reset -- 文件名


取消这次在工作区的修改: git checkout -- 文件名


把文件回滚到以前的某个版本的状态:git checkout+commit id+-- filename


还想不通可以在下方留言哦!


明明我赚钱那么难…为什么人家赚我的钱那么容易

只要有一个人能获得帮助,小熊就会继续努力

喜欢就让我们一起玩耍吧


相关文章
|
开发工具 git
使用Git根据日期进行代码版本切换的方法
通过以上步骤,可以有效地根据日期进行Git代码版本的切换。这种方法在需要回溯历史版本进行bug修复或功能复查时特别有用。Git的灵活性和强大功能使其成为现代软件开发不可或缺的工具之一。
1132 103
|
开发工具 git 开发者
Git版本管理常见文件提交流程讲解
以上就是Git常见文件提交流程概述。掌握此流程对于任何使用Git进行版本控制和协同工作项目团队成员都至关重要。
515 13
|
开发工具 git
使用Git下载指定版本或指定commit
使用Git下载指定版本或指定commit
|
安全 开发工具 Android开发
【Android Git】Git版本回退方式
在实际操作中,选择合适的版本回退方式,可以有效地管理代码版本,提高开发效率和代码质量。
1042 26
|
IDE 开发工具 git
pycharm如何查看git历史版本变更信息
通过上述步骤,你可以在 PyCharm 中轻松查看 Git 的历史版本变更信息,无论是针对整个项目、特定文件还是分支。使用 PyCharm 的 Git 集成功能,可以更高效地管理和审查代码变更,提高开发过程的透明度和可维护性。
1622 19
|
开发工具 git 索引
怎么取消对project.private.config.json这个文件的git记录
通过以上步骤,您可以成功取消对 `project.private.config.json`文件的Git记录。这样,文件将不会被包含在未来的提交中,同时仍保留在您的工作区中。
496 28
|
Shell 开发工具 git
git学习三:git使用:删除仓库,删除仓库内文件
通过GitHub的设置页面删除仓库,以及如何使用Git命令行删除仓库中的文件或文件夹。
2322 1
git学习三:git使用:删除仓库,删除仓库内文件
|
开发工具 git 索引
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
928 4
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
2327 0
|
存储 开发工具 数据安全/隐私保护
全面掌握 Git 基本操作与暂存技巧
本文详细介绍了 Git 的基本操作流程,包括查看文件状态、代码拉取、文件添加与提交、以及推送到服务器的步骤。同时,探讨了 Git 暂存的相关命令,如暂存、恢复和删除等,帮助开发者有效管理代码更改与版本控制。此外,还提供了如何找回暂存代码的技巧,以确保数据安全。
405 2