什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。

a.管理修改

对于提交修改,其实和正常提交文件一样的操作,先提交到本地版本库:

$ git add test.txt
$ git commit -m "我新增了文字哦"

然后在从本地版本库提交到github的仓库:

$ git push origin master

PS:这里有个值得注意的地方,如果之前本地没有进行过提交到Git仓库,则执行:

$ git push -u origin master

b.撤销修改

在实际工作中,我们会不断对文件进行修改,然后不断提交修改到本地版本库,也就是不断执行这2个操作:

$ git add readme.txt
$ git commit -m "第一次修改"

如果发现我们有提交错了,可以通过Git版本回退,返回某个历史版本。现在,我们回顾一下test.txt文件一共有几个版本被提交到Git仓库里了:

$ git log
commit a2b692126034f2e77f0e30d5fdf4596e2ebe1ddb
Author: shiyubushiyu <shiyubushiyu.li@163.com>
Date: Fri Aug :: + 第三次修改 commit 720d7fcf1e4ba21ff2aea93b9ba29dcba3ce4066
Author: shiyubushiyu<shiyubushiyu.li@163.com>
Date: Fri Aug :: + 第二次修改 commit b3228c156a98d211207e3c5af4392c12718d0f8d
Author: shiyubushiyu<shuyubushiyu.li@163.com>
Date: Fri Aug :: + 第一次修改

可以看到最近有3次修改,下面来看看怎么返回某个指定的版本,

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb...(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

现在,我们要把当前版本(第三次修改)回退到上一个版本(第二次修改),就可以使用git reset命令:

$ git reset --hard HEAD^
HEAD is now at 720d7fc 第二次修改

然后我们可以去test.txt看看是不是被还原到第二次修改了,答案是肯定的。

那版本回退之后,我后悔了肿么办,我想回到第三次修改肿么办呢?

办法其实还是有的,只要上面的命令行窗口还没有被关掉,你就可以顺着往上找啊找啊,找到那个(第三次修改)commit ida2b69...,于是就可以指定回到未来的某个版本:

$ git reset --hard a2b69
HEAD is now at a2b6921 第三次修改

版本号没必要写全,前几位就可以了,Git会自动去找。当然也不能只写前一两位,因为Git可能会找到多个版本号,就无法确定是哪一个了。

然后看看是否改回第三次了呢:

$ cat test.txt
你好,世界!
开始第三次修改

c.删除文件

rm命令删除文件(新文件.txt):

$ git add 新文件.txt
$ git commit -m "remo"

然后:

$ rm 新文件.txt
$ git commit -m "删除了文件"
[master fb14c3a] 删除了文件
file changed, deletion(-)
delete mode "\346\226\260\346\226\207\344\273\266.txt"

然后:

$ git rm 新文件.txt
rm '新文件.txt'
$ git commit -m "remo"
[master 72774be] remo
file changed, deletions(-)
delete mode 新文件.txt

最后:

$ git push origin master
Counting objects: , done.
Delta compression using up to threads.
Compressing objects: % (/), done.
Writing objects: % (/), bytes | bytes/s, done.
Total (delta ), reused (delta )
To git@github.com:yy-biboy/learnGitt.git
0f71c49..72774be master -> master

这样就彻底删除了 新文件.txt

so,就是这么简单~

Git管理修改、撤销修改、删除文件的更多相关文章

  1. Git管理修改、撤销和删除文件

    目录 备注: 知识点 管理修改 撤销修改 没有git add添加到暂存区时的撤销 git add添加到暂存区后的撤销 git commit提交后的撤销 删除文件 确定从版本库中删除文件 从暂存区把误删 ...

  2. [git 学习篇]git管理的是修改,并非文件

    你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. 为什么说Git管理的 ...

  3. 【Git】Git 本地的撤销修改和删除操作

    一:撤销操作 比如我现在在readme.txt文件里面增加一行 内容为555555555555,我们先通过命令查看如下: 在我未提交之前,我发现添加5555555555555内容有误,所以我得马上恢复 ...

  4. git 学习之撤销和删除

    在实际的工作和学习中我们经常的会对文件进行修改,但是或多或少的就会发现由于某些原因修改是错误的这时候就需要对所做的修改进行撤销,更或者某些时候需要对文件进行删除.本节就会告诉大家如何操作. 撤销操作 ...

  5. git学习03 - 撤销修改&删除文件

    撤销修改:git checkout -- filename :将工作区文件回到最近一次add 或者 commit的状态 撤销修改分为三种情况: 1.未提交至暂存区 使用git checkout -- ...

  6. Git教程之撤销修改(7)

    自然,你是不会犯错的.不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行:

  7. git教程:撤销修改

    转载:撤销修改 自然,你是不会犯错的.不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行: $ cat readme.txt Git is a distributed ve ...

  8. git 学习笔记 ---撤销修改

    自然,你是不会犯错的.不过现在是凌晨两点,你正在赶一份工作报告,你在readme.txt中添加了一行: $ cat readme.txt Git is a distributed version co ...

  9. mzy git学习,撤销修改(二)

    git checkout – file: 撤销我们对工作区的修改(没有提交到暂存区) 当我们在工作区修改了之后,并没有提交到暂存区,如果要撤销对 某个文件的修改的话,就使用 git checkout ...

  10. git 管理和存储二进制大文件

    git 管理二进制文件 本文档将逐步带你体验 git 的大文件管理方式. 环境: windows10 64位 cmd git版本: git version 2.18.0.windows.1 创建到推送 ...

随机推荐

  1. stand up meeting 12-7

    weekend updates: 1.答题界面和结果界面的跳转和数据传输已全部完成. 2.答题界面完成简单的getRankingData API结果展示,答题时间,错误数目和错题题目的展示,点击题目可 ...

  2. PHP函数:php_sapi_name

    php_sapi_name()  - 返回 web 服务器和 PHP 之间的接口类型. SAPI(Server Application Programming Interface)服务器应用程序编程接 ...

  3. 详解 final 和 static

    在我们上一篇博文中提到了 fianl 这个关键字,对于这个关键字,本人在初学时也耗费了极大地心血,甚至和师兄进行了激烈的讨论,并且,在我们讨论.尝试 以及 翻阅各种资料,最终得出了合适.易懂的解释. ...

  4. 详解 Paths类 与 Files类

    在本篇博文中,本人主要讲解NIO 的两个核心点 -- 缓冲区(Buffer) 和 通道 (Channel)之一的 缓冲区(Buffer), 有关NIO流的其他知识点请观看本人博文<详解 NIO流 ...

  5. 串匹配问题 (KMP算法) 详解

    串这个概念对于我们学到现在的水平来说应该是经历颇丰了,因为在C语言中我们所用到的"串"知识是在字符串那里,有了这个概念,我们再去学习串就相对而言轻松多了. 那么,现在来介绍一下字符 ...

  6. Tensorflow 模型线上部署

    获取源码,请移步笔者的github: tensorflow-serving-tutorial 由于python的灵活性和完备的生态库,使得其成为实现.验证ML算法的不二之选.但是工业界要将模型部署到生 ...

  7. SpringCloud(三)学习笔记之Ribbon

    spring Cloud Ribbon 是一个客户端的负载均衡器,它提供对大量的HTTP和TCP客户端的访问控制. 客户端负载均衡即是当浏览器向后台发出请求的时候,客户端会向 Eureka Serve ...

  8. Neo4J 查找两节点之间的路径

    # 两节点之间的所有路径MATCH p=(a)-[*]->(b)RETURN p # a->b 直接连接MATCH p=(a)-[]->(b)RETURN p # a-...> ...

  9. 使用vue.js封装一个包含图片的跑马灯组件

    初衷: 学习完Vuejs后,来准备练习仿写一下老东家的门户页面,主要是为了熟悉一下常用插件的使用,比如video.js,wow.js,swiper等等:而其中涉及到一个包含图片跑马灯组件,大概长这样( ...

  10. js输入框练习

    这个就是一个输入框的小练习(也是第一次写这个东西) <!DOCTYPE html> <html lang="en"> <head> <me ...