Git管理修改、撤销和删除文件
备注:
本文参考于廖雪峰老师的博客Git教程。依照其博客进行学习和记录,感谢其无私分享,也欢迎各位查看原文。
知识点
Git跟踪和管理的的是修改,而不是文件
git checkout -- file,会将文件撤销到和git add时的状态一样,即git checkout -- file会将工作区的文件撤销到与暂存区(stage)一致git checkout -- file命令中,如果没有--,就变成了“切换到另一个分支”的命令git reset HEAD file既可以回退版本,也可以把添加到暂存区的修改回退到工作区,HEAD表示最新版本删除文件,
git rm file,git commit -m"..."
管理修改
Git不同于其他版本控制系统,Git跟踪和管理的的是修改,而不是文件
新增一行、删除一行、修改字符、删除又增加内容、创建新文件等,都是修改
Git通过提交放入暂存区的修改,用来管理修改,而不是管理原文件。
撤销修改
在实际中,(虽然不常发生)总是会出现发生一些问题需要撤销修改。
- 比如:在文件中添加一行无意义的特殊字符
liu@liu-virtual-machine:~/gitTest$ cat readme.txt
`this is a test that I learning and use git version control system
this is a beginning
i Add a new line information in the end of readme.txt file
$%^%&^*&&(**)(*)*&^*(*&&*&YTRYYIN
没有git add添加到暂存区时的撤销
- 此时,查看
git status如下:
liu@liu-virtual-machine:~/gitTest$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: readme.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
- Git提示,
git checkout -- file可以丢弃工作区的改动
git checkout -- readme.txt
git checkout -- readme.txt会把readme.txt文件在工作区的修改全部撤销。
git checkout -- file,会将文件撤销到和git add时的状态一样,即git checkout -- file会将工作区的文件撤销到与暂存区(stage)一致
git checkout -- file作用在暂存区(stage),当git add添加到暂存区后,git status不在显示git checkout -- file命令提示
可自行测试
- 此时文件内容就回到了原来状态
$ cat readme.txt
`this is a test that I learning and use git version control system
this is a beginning
i Add a new line information in the end of readme.txt file
git checkout -- file命令中,如果没有--,就变成了“切换到另一个分支”的命令
git add添加到暂存区后的撤销
当我们git add后,发现需要撤销,此时查看git status状态
$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <文件>..." 以取消暂存)
修改: readme.txt
Git提示,使用 git reset HEAD file可以把添加到暂存区的修改撤销(unstage)
$ git reset HEAD readme.txt
重置后取消暂存的变更:
M readme.txt
git reset既可以回退版本,也可以把添加到暂存区的修改回退到工作区,HEAD表示最新版本此时查看
git status,暂存区没有修改,是干净的,工作区有修改。
$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: readme.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
- 现在可以使用
git checkout -- readme.txt丢弃工作区的修改。然后查看,修改的文件已经回到原来状态
$ git checkout -- readme.txt
$ cat readme.txt
`this is a test that I learning and use git version control system
this is a beginning
i Add a new line information in the end of readme.txt file
撤销成功
git commit提交后的撤销
对于已经commit提交到版本库的撤销,可以使用版本回退更改。
如果你提交了远程仓库,则需要另行处理。
删除文件
Git中,删除也是一个修改操作.
首先新建一个test.txt文件,添加并提交到仓库
- 当我们把目录下的文件删除后
$ rm test.txt
- 此时,工作区和版本库变得不一致
$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add/rm <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
删除: test.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
git status指出删除了test.txt文件。
- 现在有两种操作:1、确定从版本库中删除文件,2、从暂存区把误删的文件恢复
确定从版本库中删除文件
- 使用
git rm删除文件并git commit提交
$ git rm test.txt
rm 'test.txt'
$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <文件>..." 以取消暂存)
删除: test.txt
$ git commit -m"remove test.txt"
[master 6a0f133] remove test.txt
1 file changed, 0 insertions(+), 0 deletions(-)
delete mode 100644 test.txt
$ git status
位于分支 master
无文件要提交,干净的工作区
从暂存区把误删的文件恢复
- 使用
git checkout -- file从暂存区恢复误删的文件(本质还是丢弃工作区的改动)
$ git checkout -- test.txt
Git管理修改、撤销和删除文件的更多相关文章
- git 学习之撤销和删除
在实际的工作和学习中我们经常的会对文件进行修改,但是或多或少的就会发现由于某些原因修改是错误的这时候就需要对所做的修改进行撤销,更或者某些时候需要对文件进行删除.本节就会告诉大家如何操作. 撤销操作 ...
- Git管理修改、撤销修改、删除文件
什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. a.管理修改 对于提交修改, ...
- GIT 管理修改、删除文件
管理修改 现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行,这就 ...
- Git ~ 管理修改 ~ Gitasd
现在假设你一经常我了暂存区的概念 , 下面我们将要讨论的就是 , 为什么 Git 比其他的版本控制系统设计的优秀 , 因为 Git 跟踪管理的是修改而非文件 什么是修改 ? 修改就是 你在某个地方 ...
- git管理修改
为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改 ...
- Git(管理修改)
现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行,这就是一个修改 ...
- 三、git管理修改
一.修改提交 如下图,Git分工作区和版本库(.git隐藏目录中). 在每次修改后 git add "file name" 其实是把修改内容提交到本地版本库的 暂存区(stage) ...
- git 管理和存储二进制大文件
git 管理二进制文件 本文档将逐步带你体验 git 的大文件管理方式. 环境: windows10 64位 cmd git版本: git version 2.18.0.windows.1 创建到推送 ...
- 如何在linux下使用git管理上传代码&误删文件修复
首先需要安装git,sudo apt-get install git,这时就可以下载代码了. 然后先在gituhub上新建一个仓库,然后先在本地建一个git目录,git init 然后再配置用户名和邮 ...
随机推荐
- postman发送json数据
原文链接:https://blog.csdn.net/weixin_33387378/article/details/90721599 1.设置header Content-Type appli ...
- JavaSE的基本语法
JavaSE基本语法 一.语法的注意事项 1.严格区分大小写 2.每句命令结尾使用分号 3.符号都是英文状态 4.括号.引号都是成对出现的! 5.注意缩进 Tips: 文件名和类名可以不一致,但pub ...
- php 整数转罗马数字
class Solution { /** * @param Integer $num * @return String */ function intToRoman($num) { $roman=[' ...
- 工业4.0:换热站最酷设计—— Web SCADA 工业组态软件界面
前言 随着工业4.0的不断普及与发展,以及国民经济的飞速前进,我国的城市集中供热规模也不断扩大,科学的管理热力管网具有非常重大的经济和社会效益.目前热力系统,如换热站大都采用人工监控,人工监控不仅浪费 ...
- ElasticSearch中倒排索引和正向索引
ElasticSearch搜索使用的是倒排索引,但是排序.聚合等不适合倒排索引使用的是正向索引 倒排索引 倒排索引表以字或词为关键字进行索引,表中关键字所对应的记录项记录了出现这个字或词的所有文档,每 ...
- disruptor架构二
小故事:Disruptor说的是生产者和消费者的故事. 有一个数组.生产者往里面扔芝麻.消费者从里面捡芝麻. 但是扔芝麻和捡芝麻也要考虑速度的问题. 1 消费者捡的比扔的快 那么消费者要停下来.生产者 ...
- Java 多线程基础(十一)线程优先级和守护线程
Java 多线程基础(十一)线程优先级和守护线程 一.线程优先级 Java 提供了一个线程调度器来监控程序启动后进去就绪状态的所有线程.线程调度器通过线程的优先级来决定调度哪些线程执行.一般来说,Ja ...
- github知名企业开源项目索引
亚马逊:https://github.com/amzn 饿了么 https://github.com/ElemeFEhttp://lrd.ele.me/腾讯 https://github.com/Te ...
- 【Flutter 实战】简约而不简单的计算器
老孟导读:这是 [Flutter 实战]组件系列文章的最后一篇,其他组件地址:http://laomengit.com/guide/widgets/Text.html,接下来将会讲解动画系列,关注老孟 ...
- ELK安装 docker-compose.yml
version: '2.2' services: cerebro: image: lmenezes/cerebro:0.8.3 container_name: cerebro ports: - &qu ...