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


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


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

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

喜欢就让我们一起玩耍吧


相关文章
|
12天前
|
开发工具 git
如何使git提交的时候忽略一些特殊文件?
如何使git提交的时候忽略一些特殊文件?
|
19天前
|
程序员 Linux 开发工具
振南技术干货集:研发版本乱到“妈不认”? Git!(5)
振南技术干货集:研发版本乱到“妈不认”? Git!(5)
|
19天前
|
存储 安全 Linux
振南技术干货集:研发版本乱到“妈不认”? Git!(4)
振南技术干货集:研发版本乱到“妈不认”? Git!(4)
振南技术干货集:研发版本乱到“妈不认”? Git!(4)
|
19天前
|
Shell 开发工具 git
git获取gitee老版本的分支内容
git获取gitee老版本的分支内容
13 0
|
19天前
|
开发工具 git
IDEA通过git怎么回滚到某个提交节点或某个版本
IDEA通过git怎么回滚到某个提交节点或某个版本
|
19天前
|
开发工具 git
【git】如何切换到之前的提交版本
【git】如何切换到之前的提交版本
92 1
|
19天前
|
开发工具 git
【git】如何删除git远程仓库上的文件
【git】如何删除git远程仓库上的文件
17 1
|
19天前
|
Shell Linux 开发工具
振南技术干货集:研发版本乱到“妈不认”? Git!(2)
振南技术干货集:研发版本乱到“妈不认”? Git!(2)
|
19天前
|
安全 开发工具 git
关于/.git漏洞实现文件越权下载漏洞
该文描述了如何检测和利用网站的Git泄露。首先通过dirsearch扫描确认网站是否存在Git泄露,然后使用GitHack.py脚本(可在GitHub的lijiejie/GitHack项目找到)进行下载。操作步骤包括在git文件夹内创建lib子目录,放置脚本,并在git目录下运行Python命令。示例中展示了针对http://www.baidu.com/.git的尝试,结果返回404错误,而成功情况则会列出下载的文件列表。
|
19天前
|
SQL PHP 开发工具
【攻防世界】mfw(.git文件泄露)
【攻防世界】mfw(.git文件泄露)