Git ~ 管理修改 ~ Gitasd
现在假设你一经常我了暂存区的概念 , 下面我们将要讨论的就是 , 为什么 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的更多相关文章
- git管理修改
为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改 ...
- Git(管理修改)
现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行,这就是一个修改 ...
- GIT 管理修改、删除文件
管理修改 现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行,这就 ...
- Git管理修改、撤销修改、删除文件
什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改. a.管理修改 对于提交修改, ...
- Git管理修改、撤销和删除文件
目录 备注: 知识点 管理修改 撤销修改 没有git add添加到暂存区时的撤销 git add添加到暂存区后的撤销 git commit提交后的撤销 删除文件 确定从版本库中删除文件 从暂存区把误删 ...
- 三、git管理修改
一.修改提交 如下图,Git分工作区和版本库(.git隐藏目录中). 在每次修改后 git add "file name" 其实是把修改内容提交到本地版本库的 暂存区(stage) ...
- git 教程(6)--管理修改
现在,假定你已经完全掌握了暂存区的概念.下面,我们要讨论的就是,为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件. 你会问,什么是修改?比如你新增了一行,这就是一个修改 ...
- Git教程之管理修改(6)
Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件.你会问,什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了 ...
- git(工作区,暂存区,管理修改,撤销修改,删除文件)
工作区和暂存区 984次阅读 Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念. 先来看名词解释. 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的l ...
随机推荐
- [saiku] 访问saiku首页的时候前后台处理流程
这篇文章讲述:项目启动后,首次访问SAIKU的登录页,前后台分别做了什么处理 (1) 访问的到底是什么页面? 浏览器输入:localhost:8080 啪一回车 根据web访问的尿性,访问的是 ind ...
- WCF中Service Configuration Editor的使用方法
1.在App.config文件上右击,选择Edit WCF Configuration.... 或者打开Program Files\Microsoft Visual Studio 8\Common7\ ...
- python中cPickle的用法
import cPickle as p f = file('data.txt' , 'w') data = (1 , 'A' , "hello") p.dump(data , f) ...
- poj-----(2528)Mayor's posters(线段树区间更新及区间统计+离散化)
Mayor's posters Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 43507 Accepted: 12693 ...
- nyoj------79拦截导弹
拦截导弹 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到 ...
- 《JavaScript权威指南》读书笔记(一)
日期 2015-11-28 把之前的读书笔记在我弄丢它之前搬过来~~ 时间过去好久,回头一看理解都不一样了. 重点浏览了一下和Java的不同之处: js是一种宽松类型语言:js不区别整形数值与浮点型数 ...
- linq分页扩展(转)
原文地址:http://www.cnblogs.com/RainbowInTheSky/p/4590508.html public static List<T> ToPagedList&l ...
- kafka客户端代码解析
转载:http://backend.blog.163.com/blog/static/202294126201431724652597/ 可以使用服务器端下载的kafka二进制包及依赖,也可以通过ma ...
- 8种NOsql
虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破.这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举. 但是NoSQL数据库之间的不同,远超过两 SQ ...
- mysql创建PATH快捷
1.使其临时生效 PATH=$PATH:/usr/local/mysql/bin 2.永久生效 编辑/etc/profile 添加第79列 然后source /etc/profile 3.输入命令m ...