社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

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

编程三分钟 • 7 年前 • 577 次点击  
阅读 18

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

分享后端开发和云计算必备相关技术,道尽程序员小熊与老板的爱恨情仇,同名公众号:编程三分钟 回复【 资源 】可以获得程序员必备技能图谱、数百本热门编程电子书籍。

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

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

一、暂存区到工作区

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

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

二、回滚文件到某个提交

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

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

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

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

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

核心命令

git checkout [<options>] [<branch>] -- <file>...复制代码

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

版本1,time.txt内容00:50

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

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

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

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

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

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

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

  • checkout语义上是把什么东西取出来,所以此命令用于从历史提交(或者暂存区域)中拷贝文件到工作目录,也可用于切换分支。
  • reset语义上是重新设置,所以此命令把当前分支指向另一个位置,并且有选择的变动工作目录和索引。也用来在从历史仓库中复制文件到索引,而不动工作目录。

小小小小结

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

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

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


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

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


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

喜欢就让我们一起玩耍吧


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/33288