git小白入门
1.什么是git?
git是一个分布式版本控制软件。区别于SVN,每一个用户有一个版本库,当用户需要提交时可以在无网的环境下提交到本地版本库,待有网的时候彼此推送。
2.分布式版本控制(git)与集群式版本控制(cvs svn)的区别
-
本地版本控制:版本控制就是可以通过记录回到任何一个版本。在集群式版本控制中是通过中央仓库来维护历史版本,每返回一个版本都要访问一次中央仓库。在分布式版本控制中,每个计算机内部都维护着一个版本记录,如果想回退到任何版本,只需要查看自己的版本库就可以,无需联网进入中央仓库。
-
在分布式版本控制中,当两台计算机(git)需要交互时,需要通过中央服务器(gitHub公用网站\gitLab企业内部)。使用gitHub公开项目不收费,私有项目收费。
-
无需联网,可以实现本地的版本控制;
-
可以重写提交说明(svn是无法改变的);
-
每一次操作都可以回滚;
-
分支系统:如果一个项目在不同应用场景有不同的业务需求,例如一个会议系统,公司A需要稳定性高,性能次要,公司B要求性能高,稳定性次要。可以创建两个分支(branch);
-
全量:在git的版本控制中,是全量时的,即每次版本变更时,即使变更只有一部分,也为在新版本文件中加入没有修改的部分,组成一个新的完整的版本。即,每一个版本都包含所有的文件。时刻保持数据的完整性。
而SVN对于版本维护是增量式的,对于一次修改的形成的新版本,SVN在最新版本中只记录修改的部分。在寻找历史版本时,需要拼接原始的没有修改的部分和已经修改的部分组合成一个完整的历史版本。即,每个版本只包含修改部分的文件。
3.git的三种状态(也可以理解为四种)
git在使用时分为三个区:工作区,暂存区,对象区。
正在处理的文件放在工作区,只有在对象区的文件才能提交到gitHub。如果工作区与对象区直接交互,会造成两者交互过于频繁,为了避免这种情况,设立了一个暂存区,每次修改完成后添加(add)到暂存区,然后提交(commited)到对象区,最终推送(push)到服务器。其中暂存区与对象区合并称为版本库(version).
0.已管理(计算机中有诸多文件,但是git不能一次管理所有文件,只有被git管理的文件才能执行以下三种状态)
- 已修改(modified)
- 已暂存(stated)
- 已提价(commited)
4.一些操作示例
-
自由文件到已管理
-
新建一个文件夹,例如gittest
-
右键新建的文件夹 -->git bash here
git init#输入语句执行,默认为主分支(master)
-
打开新建的空文件夹,看到如下图所示,表示该文件已被git所管理(这是个隐藏目录),本机对该文件的所有操作都将记录在这个文件中。
快照48.png-
删除版本库操作
-
直接手动删除
rm -rf .git #删除.git目录,并且迭代删除其子目录
-
删完之后.git文件销售,gittest该文件也不再为主分支
-
清屏
clear#或者快捷键 ctrl+L
-
修改文件到已暂存
touch hello.txt#创建一个文件 git status#查看git状态 git add hello.txt#从已修改区到已暂存区 git status#查看git状态
-
从已暂存回退到已修改
-
从已修改到已提交
git add .#暂存所有文件 git commit#提交文件,会自动跳到vim编辑器,让我们补充提交说明,用shift+ZZ可以退出编辑器
-
修改已提交文件
快照57.pngvi hello.txt#打开文件 修改文件hello.txt git status#查看文件状态,发现文件已变成工作区状态 git add hello.text#重新暂存 git commit -m "这是我第二次提交"#当提交说明较短时,可以这样直接写在后面
-
回滚
git checkout -- hello.txt#(hello前有空格,当在已提交的对象区的文件被修改后,可以回滚到已提交时的状态,放弃修改)
-
查看提交日志
git log# 查看所有提交日志。log中一串长字符是分布式id生成器,是用随机数产生的,用于唯一识别某人某次提交。(不重复是理论上的,即重复几率很低,如千亿分之一) git log -2#查看最近两次提交日志 git log --pretty=oneline#按行显示提交日志的主要信息 git log --pretty=format:"%h -%an ,%ar:%s"#按照自定义格式显示日志:id,作者,时间,说明
网友评论