Git+Github
一、简述
1.版本控制软件
是一个用来记录文件变化,以便将来查阅特定版本修订情况的系统,把手工管理文件版本的方式,改为由软件管理文件的版本。
- 版本控制软件好处
①操作方面:只需识记几组简单的终端命令
②易于对比
③易于回溯:可以将选定的文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态
④不易丢失
⑤协作方便
2.版本控制系统
①本地版本控制系统:单机运行,使维护文件版本的操作工具化
②集中化的版本控制系统:基于服务器、客户端。联网运行,支持多人协作开发;性能差,用户体验不好 (SVN记录变化的差异)
③分布式版本控制系统:基于服务器、客户端联网运行,支持多人协作开发;性能优秀,用户体验好(git)
二、Git
1.Git
一个开源的分布式版本控制系统,目前世界最先最流行的版本控制系统,快速高效处理各种项目版本管理
特点:项目越大越复杂,协同开发者越多,越能体现出Git的高性能和高可用性
特性:
①直接记录快照(在原有文件版本的基础上重新生成一份新的文件,类似于备份),而非差异比较
②近乎所有操作都是本地进行(只需要访问本地资源和文件)
2.Git的三个区域
①工作区
②暂存区(已完成的工作的临时存放区域,等待被提交)
③Git仓库(最终的存放区)
3.Git的三种状态
①已修改 modified
②已暂存 staged
③已提交 committed
4.工作区文件的四个状态
• 红色:工作区文件没有添加到暂存区
• 绿色:暂存区文件没有提交到本地存储
• 无文件:刚添加到本地存储,接下来等待需求,继续开发
5.基本命令
6.回撤操作:可来回穿梭版本
7.移除暂存区
8.撤销:所有修改都消失,不可逆
9.移除文件
三、Github、Gitee
1.开源
开放源代码,任何人都可以去查看、修改、使用开源代码
2.开源许可协议
为了限制使用者的使用范围和保护作者的权利,每个开源项目都应遵守开源协议
① BSD(Berkeley Software Distribution)
② Apache Licence 2.0
③ GPL(GNU General Public License)
具有传染性的一种开源协议,不允许修改后和衍生的代码做为闭源的商业软件发布和销售
使用 GPL 的最著名的软件项目是:Linux
④ LGPL(GNU Lesser General Public License)
⑤ MIT(Massachusetts Institute of Technology, MIT)
是目前限制最少的协议,唯一的条件:在修改后的代码或者发行包中,必须包含原作者的许可信息
使用 MIT 的软件项目有:jquery、Node.js
3.开源项目托管平台
开源项目托管平台:专门用于免费存放开源项目源代码的网站
三种托管平台:
• Github(全球最牛的开源项目托管平台,没有之一)
• Gitlab(对代码私有性支持较好,因此企业用户较多)
• Gitee(又叫做码云,是国产的开源项目托管平台。访问速度快、纯中文界面、使用友好
4.新建空白远程仓库
5.远程仓库的两种访问方式
①HTTPS:零配置,但是每次访问仓库时,需要重复输入 Github 的账号和密码才能访问成功
②SSH:需要额外的配置,但是配置成功后,每次访问仓库时,不需重复输入 Github 的账号和密码
6.推送本地到远程
①基于HTTPS将本地仓储上传到github
第二次之后就可以直接使用:git push 推送
②基于SSH将本地仓储上传到github
7.拉取远程到本地
1. 将远程仓库克隆到本地:
# git clone 远程仓库地址
git clone git@github.com:byte0/mydemo.git
2. cd ./文件夹名
3. 已经克隆下来的项目代码需要更新最新代码:
# 更新远程仓库最新代码
git pull origin master
# 简写如下
git pull
四、Git分支
1.master主分支
用来保存和记录整个项目已完成的功能代码,不允许程序员直接在master分支上直接修改代码
2.功能分支
专门用来开发新功能的分支,新功能开发并测试完毕后,最终合并到master主分支。
3.基本命令
4.合并分支
①创建分支:git branch 分支名
②切换到master分支:git checkout master
③将login分支的代码合并到masster分支:git merge login
④合并结束后推送到远程:git push -u origin master