大家有没有这样一种困扰,每次在修改word文件时,版本很多忘记了之前几次的修改,想返回去的时候已经没有记录了,于是版本控制就诞生了!
认识GIT
一、关于版本控制
1.文件的版本
- 操作麻烦 每次都需要复制粘贴重命名
- 命名不规范 无法通过文件名知道具体做了哪些
- 容易丢失 如果硬盘故障或不小心删除,文件很容易丢失
- 协作困难 需要手动合并每个人对项目文件的修改,合并时极容易出错。
手动维护文件太难啦,于是就有了版本控制软件。 |
版本控制软件:是一个用来记录文件变化,以便将来查阅特定版本修订情况的系统,因此有时也叫做“版本控制系统”。
2.使用版本控制软件的好处:
- 操作简单------只需记住几组简单的终端命令
- 易于对比------方便比较文件变化的细节
- 易于回溯------将选定文件回溯到之前的状态,甚至是项目
- 不易丢失------被用户误删的文件可以轻松恢复
- 协作方便------基于版本控制软件提供的分支功能,可以轻松实现多人协作合并开发
3.版本控制系统的分类:
3.1 本地版本控制系统
特点:使用软件来记录文件的不同版本,提高了工作效率,降低了手动维护版本的容错率。
缺点:单机运行,不支持多人协作开发。
版本数据库故障后 ,所有历史更新记录丢失。
3.2集中化的版本控制
特点:基于服务端和客户端的运行模式
服务器保存文件的所有更新模式
客户端只保留最新的文件版本
优点:联网运行,支持多人协作开发
缺点:不支持离线操作,要是服务器崩溃所有人无法工作,版本数据库故障所有历史更新记录将会丢失。
3.3分布式版本控制系统
优点:支持离线操作啦
缺点:占用空间大啦
分布式版本控制系统客户端也具有和中心服务端一样的内容,但是呢客户端是代码工作人员开发的在离线的时候也可以将文件上传到本地库。不过呢在联网的时候才能上传给服务器哦。 |
在这里讲讲SVN吧这样才能体现Git更好用啦哈哈哈。
SVN是基于差异的版本控制。
思考一下:在这里要获取第五次的文件是不是太麻烦了?
因为SVN只记录前后文件变化的差异,那么你要是获取第五次文件岂不是前四次的改变都要应用之后才能得到。但是,这样的优点就是占用空间小。Git是用快照的方式,将每一次修改后的文件备份,如果文件没有修改呢,就存储一个地址指向原来的文件,缺点是占用空间大了。
接下来进入我们的主题了。
二、Git基础
2.1安装并配置
Git中的三个区域:工作区,暂存区,Git仓库。
举个例子吧这里有一丢试卷老师要修改了,那么工作的地方就是工作区,老师批改了一部分卷子将批改好的放在了另一个地方,这个地方就是暂存区。最后,所有的试卷批改好了放到了一个仓库,就是本地库。
- 已修改modified,修改了文件还没放到暂存区
- 已暂存staged,修改了文件并放到了暂存区
- 已提交commited,文件安全地保存到了Git仓库
工作流程:
在使用git之前呢是需要配置用户的个人信息的,简单来说呢就是用户名和用户邮箱了,不然服务端怎么知道是谁修改了文件呢。是如何配置呢?
用户打开该文件夹空白处进入git bash输入:
git config --global user.name
git config --global user.email
这个是一次配置永久生效的,然后呢win+e打开c盘下用户文件夹点击里面的.gitconfig文件就可以查看了
除了以上方法,也可以在终端直接查看:
如果不知道具体的命令也可以通过git获取帮助:
- 在浏览器离线状态也可查看
- 在终端直接查看
2.2基本操作
1.获取git仓库的两种方式:
- 将尚未版本控制的现有目录转化为git仓库
- 克隆一个已经存在的git仓库
2.在现有目录初始化git仓库:
首先点进文件夹,然后git bash进入输入git init初始化命令会生成一个新的仓库-------.git文件夹。文件夹里面的信息是仓库的必要组成部分。
3.工作区文件的四种状态
两大类:未被git管理和已被git管理
最终操作结果是让工作区中的文件称为未修改状态
4.1查看文件状态:
未追踪文件前面会显示??
4.2git add命令有三个功效:
- 开始跟踪新文件
- 把已跟踪且已修改的文件存放到暂存区
- 把有冲突的文件标记为已解决
使用git add开始跟踪文件
此时文件已处于暂存区,用精简命令查看:
4.3提交更新
-m后面是对提交内容做进一步的描述。
最后提交更新就成功啦。过程如图所示:
5.对已提交的文件进行修改
进行状态查看:
红色的M的意思就是文件修改了,但是还未提交到暂存区。如果已经提交到了暂存区,应该显示绿色的M。最后一步呢,当然是git commit -m "对Index.html进行了修改”。
如果想要让工作区中的文件撤回修改可以使用命令:
git checkout -- index.html
6.向暂存区中一次添加多个文件
git add .//将新增或者修改后的文件全部提交到暂存区
7.取消暂存区中的文件
git reset HEAD
8.跳过使用暂存区域
git commit -a -m “描述信息”
9.移除文件
10.忽略文件
10.查看提交历史
git log
git log -2
git log -2 --pretty=oneline
git log -2 --pretty=format:" %h | %an | %ar | %s"//标识 作者 修改时间 标记
11.回退到指定版本
三、Github
全球最大的开源项目托管平台,这里注意区分Git是版本控制工具,而Github开源项目托管平台。
Github上的远程仓库,有两种访问方式,分别是HTTPS和SSH。它们的区别是:
HTTPS:零配置;但是每次访问仓库时,需要重复输入Github的账号和密码才能访问成功
SSH:需要进行额外的配置;但是配置成功后,每次访问仓库时,不需重复输入Github的账号和密码
注意:在实际开发中,推荐使用SSH的方式访问远程仓库。
1.基于HTTP将本地库上传到Github
- 本地没有现成的Git仓库
echo "# project 02" >> README.md//使用终端命令创建README.md文档,并写入初始内容为# project 02
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/teacher-liu/project_02.git//将本地仓库和远程仓库关联,并把远程仓库命名为origin
git push -u origin master//将本地仓库中的内容推送到远程仓库
要是本地有现成的git仓库:
git remote add origin https://github.com/teacher-liu/project_02.git
git push -u origin master
之后推送直接git push就可以了
2.配置SSH
在git bash中输入命令:
ssh-keygen -t rsa -b 4096 -C "your email"
连敲三次回车之后会在C:\Users\用户名文件夹.ssh中将公钥文件配置到GitHub。
检测Github的SSH key是否配置成功
打开git bash,输入命令:
会出现一下提示消息:
选择yes,显示一下信息则配置成功:
3.基于SSH将本地库上传到GitHub
无git仓库:
echo "# project 02" >> README.md//使用终端命令创建README.md文档,并写入初始内容为# project 02
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:teacher-liu/project_02.git//将本地仓库和远程仓库关联,并把远程仓库命名为origin
git push -u origin master//将本地仓库中的内容推送到远程仓库
如果有git仓库:
git remote add origin git@github.com:teacher-liu/project_02.git//将本地仓库和远程仓库关联,并把远程仓库命名为origin
git push -u origin master
- 将远程仓库克隆到本地
git clone 远程仓库的地址
四、Git分支
1.基本命令
master是主分支,功能分支是临时从master分支上分叉出来的,最终需要合并到master分支上面。
- 查看分支
git branch
- 创建分支
git branch 分支名称
- 切换分支
git checkout login
简写git checkout -b 分支名称
- 合并分支(要先切换到master分支)
git merge login
- 删除分支
git branch -d 分支名称
遇到冲突时的分支合并:
2.远程分支操作
- 将本地分支推送到远程仓库
除第一次推送外,以后直接使用git push命令就可以了。
查看远程仓库的所有分支列表:
git remote show 分支名称
跟踪分支:
拉取远程分支的代码:
git pull
删除远程分支:
git push 远程仓库名称 --delete 远程分支名称
#示例
git push origin --delete pay
五、总结
1.能够掌握Git中基本命令的使用
- git init
- git add
- git commit -m “提交消息”
- git status 和 git status -s
2.能够使用GitHub创建和维护远程仓库
- 能够配置GitHub的SSH访问
- 能够将本地仓库上传到GitHub
3.能够掌握Git分支的基本使用
- git checkout-b 新分支的名称
- git push -u origin 新分支的名称
- git checkout 分支名称
- git branch
文章评论