做大的工程的时候是需要版本控制系统的。git号称是世界上最好的版本控制系统。一般来说,写一个东西,需要更改很多次,但是一般都不会在一个源文件上改,因为改的次数太多了,改了什么就记不住了,而且,一旦改错了,就退不回去了。
- GIT的背景历史
- GIT的说法
- GIT记录的是什么
- GIT的三棵树
- GIT的工作流程
- GIT的实战
- 查看状态
- 回到过去
- reset 命令的选项
- 比较不同
- 修改最后一次提交
- 删除文件
- 重命名文件
- 创建和切换分支
- GIT的合并和分支
GIT的背景历史
- 做大的工程的时候是需要版本控制系统的。
- git号称是世界上最好的版本控制系统。
- 一般来说,写一个东西,需要更改很多次,但是一般都不会在一个源文件上改,因为改的次数太多了,改了什么就记不住了,而且,一旦改错了,就退不回去了。
- 这个问题曾经困惑了linus,1991年的时候。
- bitkeeper 商业版本系统,上级公司是bitmover的下级,是git的商业原型。
- 2005年,linus用了两周的时间写了git
- GitHub项目上线。
- git的安装就到网上来找到安装包就可以使用了
- 大多数的网上的教程都是交使用图形界面
- 这个学习笔记主要学习git原生态的命令行模式,不打算奖git的界面模式
- 主要的原因是大多数界面模式下是能实现git的常用命令,而命令行模式拥有git的所有命令。
- 学会命令行模式,界面模式自然会用
- 既然都学到进阶的极客教程了,就不能厌烦命令行操作了
GIT的说法
- git的设计让使用者觉得自己比想象中的笨—andrew morton
- 不要高估自己的智商,不要低估git的能耐!
GIT记录的是什么
- svn记录的是每一次版本的变动的内容
- git则是将每个版本独立保存
- 普通的程序员是把很多的时间放在写代码和调bug上,而优秀的程序员是将更多的经历放在设计上
GIT的三棵树
- 工作区域
- 暂存区域
- git仓库
GIT的工作流程
- git的工作流程一般是酱紫的
- 在工作目录中添加,修改文件
- 将需要惊醒版本管理的文件放入暂存区域
- 将暂存区域的文件提交到git仓库
- git的文件有三种状态
- 已修改(modified)
- 已暂存(staged)
- 已提交(committed)
GIT的实战
-将工作目录的文件放到git仓库只需要两步
git add 文件名
git commit -m “你干啥了”
查看状态
我们是码农啊,双手不能离开键盘的
git status
回到过去
reset
checkout
reset 命令的选项
git reset —mixed HEAD~
移动head的指向,将其指向上一个快照
将head移动后的指向的快照回滚到暂存区
git reset —soft HEAD~
移动head 的指向,将其指向上一个快照
git reset —hard HEAD~
将移动head的指向,将其置乡上一个快照
将head移动后的指向的快照回滚到暂存区域 将暂存区域的温江还原到工作目录
比较不同
git diff 可以比较文件,版本的不同的地方
修改最后一次提交
git amend 修改最后一次commit的说明 使用类似vi的键盘绑定,退出用q加上!号 可以直接再接一个m,加上新的commit git –amend -m “新的commit”
删除文件
git rm 加上文件名称,可以删除工作目录和暂存区域的文件
git reset 恢复原来的快照
如果要彻底删除仓库里的文件就需要切掉快照
重命名文件
git mv 这个其实就是和linux的命令差不多的
创建和切换分支
分支是git最重要的特性。
假设现在的大项目已经上线了,但是要添加一下新的功能,又为了保险起见不能直接在项目上更改。
这个时候就需要分支。
git是如何创建分支的呢?
git branch 分支
切换分支
git chechout 分支
GIT的合并和分支
话说天下大势合久必分 分久必合
GIT本来只有一条master,但是这事不够的。
及时中的开发分支可能有master hotfix release develop festure 等等版本,他们因为某些原因比如赶着时间上线,不能一下子把所有的特性都放到master里。而是等到下一个版本中在添加,这个时候就需要分枝。
创建并切换到新的分支:
git branch -b 分枝名称
切换回主分支:
git checkout master
合并分支:
git merge 分支名称
删除分支
git branch -d 分支名称