撤销暂存文件与任意切换文件版本-每天三分钟玩转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


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


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

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

喜欢就让我们一起玩耍吧


相关文章
|
20天前
|
Shell 开发工具 git
git学习三:git使用:删除仓库,删除仓库内文件
通过GitHub的设置页面删除仓库,以及如何使用Git命令行删除仓库中的文件或文件夹。
81 1
git学习三:git使用:删除仓库,删除仓库内文件
|
14天前
|
存储 开发工具 数据安全/隐私保护
全面掌握 Git 基本操作与暂存技巧
本文详细介绍了 Git 的基本操作流程,包括查看文件状态、代码拉取、文件添加与提交、以及推送到服务器的步骤。同时,探讨了 Git 暂存的相关命令,如暂存、恢复和删除等,帮助开发者有效管理代码更改与版本控制。此外,还提供了如何找回暂存代码的技巧,以确保数据安全。
21 2
|
19天前
|
开发工具 git 索引
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
git上面中新建gitignore文件,并且去除已经在仓库版本管理中的文件夹
42 4
|
26天前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
32 1
|
2月前
|
安全 开发工具 git
git合并错了,我想回退到之前的版本
git合并错了,我想回退到之前的版本
|
3月前
|
缓存 开发工具 git
给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件
本文介绍了如何为Git仓库添加`.gitignore`文件来排除不需要跟踪的临时文件,并展示了如何删除已经被提交的临时文件缓存,以清理Git仓库中的不必要文件。
212 0
给Git仓库添加.gitignore:清理、删除、排除被Git误添加的临时文件
|
3月前
|
开发工具 git iOS开发
服务器配置Huggingface并git clone模型和文件
该博客提供了在服务器上配置Huggingface、安装必要的工具(如git-lfs和huggingface_hub库)、登录Huggingface以及使用git clone命令克隆模型和文件的详细步骤。
236 1
|
4月前
|
开发工具 git
git如何不上传指定的文件或文件夹
【7月更文挑战第9天】平时写代码的时候有很多测试文件或者静态文件,没必要上传到git上,不仅占资源更新还麻烦,以下介绍如何忽略不需要上传的文件或文件夹。
354 8
|
4月前
|
开发工具 git
unable to index file ‘~$git提交版本号.xlsx‘
unable to index file ‘~$git提交版本号.xlsx‘
|
4月前
|
存储 安全 开发工具
Git学习笔记 三个区域、文件状态、分支、常用命令
理解并掌握这些概念和命令,对于有效地使用Git来管理项目源代码是至关重要的。Git的强大功能支持了复杂的开发工作流程,而良好的Git实践能够极大地提高团队的协作效率。随着实践的增多,对于Git更深层次的功能和最佳实践的理解也会随之增长,进一步加强你作为一个软件开发者的能力。
67 0