一. Git概述
Git是一个免费的,开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目
Git 易于学习,占地面积小,性能极快,他有廉价的本地库,方便的暂存区和多个工作流分支等特性
-
何为版本控制
版本控制是一种记录文件内容变化,以便将来查询特定版本修订情况的系统
版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够看到历史版本,方便版本切换
-
为什么需要版本控制
个人开发过渡到团队协作
-
版本控制工具
-
集中式版本控制工具
CVS,SVN,VSS
集中式版本控制系统诸如CVS,SVN等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人门通过客户端连接到这台服务器,取出最新的文件或者提交更新。多年以来,这以称为版本控制的标准做法
这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松的掌握每个开发者的权限,并且管理着一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来的轻松容易
事分两面,有好有坏。这么做显而易见的缺点就是中央服务器单点故障,如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作
-
分布式版本工具
Git,Meruial,Bazaar,Darc
像Git这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整的镜像下来(本地库)。这样任何一处协同用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户的每一次文件提取操作,实际上都是一次对整个文件的完整备份
分布式版本控制系统出现之后,解决了集中式版本控制系统的缺陷
- 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
- 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
-
-
git工作机制和代码托管中心
本地工作目录—git add----->暂存区—git commit----->版本库(分支 默认主分支master)----push–>远程版本库
^---------------pull--------------------|
git和代码托管中心
代码托管中心是基于网络服务器的远程代码仓库,一般称为远程库
局域网
Gitlab(公司内部)
互联网
GitHub(外网)
Gitee(国内网站)
二.Git常用命令
命名名称 | 作用 |
---|---|
git config --global user.name “username” | 设置用户名 |
git config --global user.email “useremail” | 设置邮箱 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到暂存区 |
git commit -m “说明” 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard ^HEAD | 版本穿梭 |
三.版本穿梭
-
查看日志
查看精简版日志 git reflog
查看详细日志 git lof
-
版本穿梭
穿梭到前一版本 git rest --hard ^HEAD
穿梭到任意版本 git rest --hard 版本号
四.分支
提交—>部署—>服务器(测试)—>部署(运维)—>服务器(线上)—>用户
-
什么是分支
在版本控制系统中,同时推进多个任务,为每个任务,我们可以创建每个任务的单独分支。使用分支可以把自己的工作从开发主线上分离出来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单的理解为副本,一个分支就是一个单独的副本。(分支的底层就是指针的引用)
-
分支的好处
同时并行推进多个功能的开发,提高开发效率
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可
-
分支的操作
命令名称 作用 git branch 分支名 创建分支 git branch -v 查看分支 git checkout 分支名 切换分支 git merge 分支名 把指定分支合并到当前分支上 git reset --merge 退回合并
五.GitHub操作
GitHub 网址: https://github.com/
Ps:全球最大的同性交友网站
远程仓库操作
命名名称 | 作用 |
---|---|
git remote -v | 查看当前所有远程库地址别名 |
git remode add 别名 远程地址 | 远程连接并起别名 |
git push (-u) 别名 分支 | 推送本地分支上的内容到远程库(首次推送需要 -u 参数) |
git clone 远程地址 | 将远程库的内容克隆到本地 |
git pull 别名 远程分支名 | 将远程仓库对对于分支最新的内容拉下来之后与当前本地分支进行合并(更新) |
-
免密钥登录 ssh
生成密钥
ssh-keygen -t rsa -C 2414680855@qq.com (本地生成文件 /Users/macos/.ssh/id_rsa 只需要生成一次)
本地项目与远程相关联 git remote add origin git@gitee.com:zhouhongjie123/gitlearn.git
-
第一次发布项目
git add
git commit -m “注释内容”
合并代码 : git pull --rebase origin master
推送到远程: git push -u origin master
-
第一次下载项目(远程到本地)
git clone git@gitee.com:zhouhongjie123/gitlearn.git
-
提交
git add .
git commit -m “”
git push origin master
-
更新(远程到本地)
git pull