现在假设你一经常我了暂存区的概念 , 下面我们将要讨论的就是 , 为什么 Git 比其他的版本控制系统设计的优秀 , 因为 Git 跟踪管理的是修改而非文件

什么是修改  ? 修改就是 你在某个地方 新增了一行 , 删除了一行 , 或者修改了 某一行的内容 . 包括创建一个新的文件也是修改 .   下面我们试验一下证明 跟踪管理的是内容 .

现在我们讲 readme.txt 新增加一行 ,  " 我是新增加的一行  "

xpower@xpower-CW65S:~/learngit$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动) 修改: readme.txt 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

然后将该文件添加到暂存区

xpower@xpower-CW65S:~/learngit$ git add readme.txt

现在可以看到暂存区内保存了一个 已经变化的文件 .

xpower@xpower-CW65S:~/learngit$ git status
位于分支 master
要提交的变更:
(使用 "git reset HEAD <文件>..." 以取消暂存) 修改: readme.txt

现在再次修改文件 . "我是第二次修改"
 然后直接添加到 分支

xpower@xpower-CW65S:~/learngit$ git commit -m "what happend ?"
[master 515237e] what happend ?
file changed, insertion(+), deletion(-)
xpower@xpower-CW65S:~/learngit$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动) 修改: readme.txt 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

从上面的代码可以看出 尴尬的事情发生了  ,   第二次修改的内容没有被添加进去 .

现在 讲第二次修改添加到暂存区

 xpower@xpower-CW65S:~/learngit$ git add readme.txt

然后讲文件添加到 分支 .

xpower@xpower-CW65S:~/learngit$ git commit -m"you say"
[master 18b2596] you say
file changed, insertion(+)

..-----------------------------------------------------------------------------------------

上面的添加是一种比较麻烦的事情 . 下面介绍一个简单的.  当你修改完文件之后 git status 会出现

xpower@xpower-CW65S:~/learngit$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动) 修改: readme.txt 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

看到最后一行 , 有两种添加方法 , 第一种 " git commit . " 是将工作区内的所有 " 新的 " 文件 都保存到暂存区 . 或者直接 " git commit -a " 用VIM 输入更改备注之后  直接将 工作区 " 新的 " 文件储存到 分支里面 /

撤销修改.

若干年后的某一个凌晨两点你在赶一份工作报告 . 你在 readme.txt里面.写了一句 . " My stupid boss still prefers SVN " 在你准备提交之前 , 一杯咖啡起了作用 , 你猛然发现 stupid boss 可能会让你丢掉这个月的奖金 !

 xpower@xpower-CW65S:~/learngit$ cat readme.txt
git is version control systen.
git is free software
我是第一次修改 我是第二次修改
My stupid boss still prefers SVN

既然错误发现的很及时 , 就可以很容易的纠正他 ,  你可以手动讲文件恢复到你想要的样子 , 然后用git status 查看一下 .

 xpower@xpower-CW65S:~/learngit$ git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动) 修改: readme.txt 修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

贴心的git 会告诉你 接下来你能执行的操作 . git checkout -- readme.txt   丢弃掉工作去的改动 .

xpower@xpower-CW65S:~/learngit$ git checkout -- readme.txt
 xpower@xpower-CW65S:~/learngit$ cat readme.txt
git is version control systen.
git is free software
我是第一次修改 我是第二次修改

命令 git checkout -- readme.txt 的意思就是 将文件 readme.txt文件在工作区的修改全部撤销 .
这里有两种情况  :

一种是 readme.txt还没有放到 暂存区 . 现在撤销修改 就回到和版本库 一模一样的状态 .

一种是 readme.txt已经存放到暂存区 , 现在又做了修改 , 现在撤销修改 旧回到和版本库一模一样的状态 .

现在 假设你不但该错了东西 , 而且还从暂存区 提交到了版本库 , 怎么办呢 ? 还是记得版本回退么? 我们可以讲版本回退 , 不过这也是有条件的就是 , 你还没有把本地版本的库推送到远程 , 因为Git的是分布式版本控制系统 . 我们后面会讲到 远程版本库 , 一旦你将 "stupid boss" 推送到了远程版本库 ....那就  ...

Git ~ 管理修改 ~ Gitasd的更多相关文章

  1. git管理修改

    为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改 ...

  2. Git(管理修改)

    现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行,这就是一个修改 ...

  3. GIT 管理修改、删除文件

    管理修改 现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行,这就 ...

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

    什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. a.管理修改 对于提交修改, ...

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

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

  6. 三、git管理修改

    一.修改提交 如下图,Git分工作区和版本库(.git隐藏目录中). 在每次修改后 git add "file name" 其实是把修改内容提交到本地版本库的 暂存区(stage) ...

  7. git 教程(6)--管理修改

    现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行,这就是一个修改 ...

  8. Git教程之管理修改(6)

    Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件.你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了 ...

  9. git(工作区,暂存区,管理修改,撤销修改,删除文件)

    工作区和暂存区 984次阅读 Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的l ...

随机推荐

  1. 安装 request模块

    python3 requests 安装包下载安装[windows] 听语音 | 浏览:54 | 更新:2016-07-25 17:09 windows下直接使用:easy_install reques ...

  2. js匿名函數

    (function($){})(jquery) == (function($){})(jQuery) 实际上是匿名函数 用于存放开发插件的代码 作用(非常有用): 这种写法的最大好处是形成闭包.在(f ...

  3. JavaScript基础知识(1)

    表单的确认 : 客户端确认 --减少服务器负载 --缩短用户等待时间 --兼容性难 服务器端确认: ----统一确认 ----兼容性强 ----服务器负载重 JavaScript基本的写法:      ...

  4. Hadoop常见错误及处理方法

    1.Hadoop-root-datanode-master.log 中有如下错误: ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: jav ...

  5. C语言实现统计字符个数

    #include<stdio.h> int main() {     int sz[10]={0},zm[26]={0},z[26]={0},i,space=0,e=0,t=0;      ...

  6. 减少HTTP请求之将图片转成二进制并生成Base64编码,可以在网页中通过url查看图片(大型网站优化技术)

    在网站开发过程中,对于页面的加载效率一般都想尽办法求快.那么,怎么让才能更快呢?减少页面请求 是一个优化页面加载速度很好的方法.上一篇博文我们讲解了 “利用将小图标合成一张背景图来减少HTTP请求”, ...

  7. jar转dll

    IKVM http://www.cnblogs.com/luckeryin/archive/2012/03/28/2421274.html

  8. 《算法导论》笔记---附录 B.5 树

    遇到同样的问题,在豆瓣上转过来记录下. 以下内容转自:http://book.douban.com/annotation/16409380/ -------------------分割线------- ...

  9. [转]C#设置WinForm快捷键

    1.Alt+*(按钮快捷键)按钮快捷键也为最常用快捷键,其设置也故为简单.在大家给button.label.menuStrip等其他控件的Text属性指定名称时,在其后面加上‘&’然后在加上一 ...

  10. php solr 查询

    $options = array( 'hostname' => 'localhost', 'port' => 8080, 'path' => 'solr/test'); $clien ...