GIT 版本控制软件
目标
版本控制概念
什么是版本管理
版本管理是一种记录文件变化的方式,以便将来查阅特定版本的文件内容。
人为维护文档版本的问题
Git 是什么(★★★)
Git是一个分布式版本管理控制系统(缩写VCS),它可以在任何时间点,将文档的状态作为更新记录保存起来,也可以在任何时间点,将更新记录恢复回来。
小结
Git环境搭建(★★★)
Git下载安装
下载git安装包,在阿里百秀-Day01课件里面的素材文件夹中已经下载好
双击安装,选择默认配置即可
安装完后,右键会出现git菜单,选中 Git Bash Here,弹出命令窗口
输入命令 git --version 查看git版本
Git基本工作流程
git仓库 暂存区 工作目录
用于存放提交记录 临时存放被修改文件 被Git管理的项目目录
小结:
Git 使用前配置
Git允许多人进行开发,所以我们需要配置用户名和邮箱,这样在Git仓库里面就能标明代码是谁进行的提交,方便进行管理
通过命令行的形式进行的配置,也可以通过修改配置文件来进行修改,文件名字叫 .gitconfig,位置在 C:\Users\系统用户名.gitconfig
注意
Git使用(★★★)
提交文件到Git仓库
需要使用到的命令:
1.初始化Git仓库
git init
此时在对应文件夹中会自动创建一个 .git 的隐藏文件夹,里面放的就是git相关配置信息与git仓库
2.查看相关状态
git status
此时我们index.html 文件还没有被git管理,如果需要被管理起来,需要操作下一个步骤
3.添加文件到git中
git add index.html
添加完后,可以查看一下文件状态
git status
此时文件是添加到了暂存区,还没有提交到Git仓库
4.提交到Git仓库
git commit -m 第一次提交
出现这些信息,代表提交成功;注意,后面要带上提交的日志信息
5.查看提交日志信息
git log
撤销
用暂存区中的文件覆盖工作目录中的文件
场景:当工作目录中添加的一些代码存在一些问题,但是又不记得修改了哪一些地方了,此时就可以用暂存区的文件来覆盖我们工作目录的文件
git checkout 文件
将文件从暂存区中删除
场景:当我们不小心把其他的一些测试代码或者是一些没用的文件添加到了暂存区后,我们可以通过命令进行移除
git rm --cached 文件名
恢复git仓库中指定版本的项目
场景:一般是用于恢复到某一个正常的版本
git reset --hard 提交ID
Git分支(★★★)
为了便于理解,大家暂时可以认为分支就是当前工作目录中代码的一份副本。
使用分支,可以让我们从开发主线上分离出来,以免影响开发主线。
分支细分
主分支(master)
第一次向 git 仓库中提交更新记录时自动产生的一个分支。这个属于是主分支,主分支中的代码是很稳定的代码,所以我们在开发的时候一般都不会把代码直接提交到主分支中,主分支中的代码一般都是用于线上的项目;我们一般在开发的时候,会把代码先同步到开发分支上,等功能完成并且测试没有问题了,我们才会同步到主分支上
开发分支(develop)
作为开发的分支,基于 master 分支创建,这条分支就是用于我们日常开发的分支
功能分支(feature)
作为开发具体功能的分支,基于开发分支创建,为了不影响整体的开发项目,我们在实现某一些有难度的功能时候,会创建功能分支,等到功能实现完毕,没有问题了我们才会同步到开发分支上
小结
分支相关命令
暂时保存更改
在git中,可以暂时提取分支上所有的改动并存储,让开发人员得到一个干净的工作副本,临时转向其他工作。
应用场景:分支的临时切换
注意:
Github
在版本控制系统中,大约90%的操作都是在本地仓库中进行的:暂存,提交,查看状态或者历史记录等等。除此之外,如果仅仅只有你一个人在这个项目里工作,你永远没有机会需要设置一个远程仓库。
只有当你需要和你的开发团队共享数据时,设置一个远程仓库才有意义。你可以把它想象成一个 “文件管理服务器”,利用这个服务器可以与开发团队的其他成员进行数据交换。
Github概念
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持git 作为唯一的版本库格式进行托管,故名GitHub。
GitHub于2008年4月10日正式上线,除了Git代码仓库托管及基本的 Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。目前,其注册用户已经超过350万,托管版本数量也是非常之多,其中不乏知名开源项目 Ruby on Rails、jQuery、python 等。
注册(★★)
访问github首页,点击 Sign up 连接。(注册)
填写用户名、邮箱地址、GitHub登陆密码
选择计划
填写 GitHub 问题
验证邮箱
GitHub 个人中心
创建仓库(★★)
填写仓库基本信息
将本地仓库推送到远程仓库
多人协作开发(★★)
在真实的工作中,都是团队在进行开发项目,一个程序员来负责一个功能模块,最后整合在一起就是完整项目,所以这里就需要多人协作开发了,需要一个服务器来管理所有程序员的代码,每一个程序员把代码都提交到服务器里面,这样,服务器里面的代码就是一个完成的项目了
A在自己的计算机中创建本地仓库
git init 创建本地仓库
git add index.html 添加一个文件到暂存区
git commit -m A程序员第一次提交
A在github中创建远程仓库
参考上面 创建仓库
复制上面的地址
A将本地仓库推送到远程仓库
git push https://github.com/自己对应的仓库链接
给远程仓库配置别名
git remote add origin https://github.com/自己对应的仓库链接
这句命令就是给我们远程仓库的地址配置了别名 叫做 origin
后续我们去推送的时候就可以直接使用别名
git push origin master
如果我们提交的时候携带了参数 -u 那么下次提交的时候就只需要输入 git push
git push -u origin master
当我们第一次登录了github,那么window会默认帮我们保存用户名跟密码,保存的位置如下
B克隆远程仓库到本地进行开发
因为A已经创建了远程的仓库,所以程序员B就不需要创建仓库,直接把远程的仓库克隆一份到本地即可
git clone 远程仓库地址
B将本地仓库中开发的内容推送到远程仓库
B程序员此时修改index.html里面的内容
git add index.html 因为修改了内容,需要提交到暂存区
git commit -m 程序员B修改了代码
此时推送到服务器的时候,需要程序员A在github上面添加程序员B
程序员A进入github官网,点击 settings,点击Collaborators
点击 add collaborator 就会被添加进去
把邀请链接发送给程序员B,程序员B需要登录github,然后对链接进行访问
需要在凭据里面把程序员A的账号进行删除
可以在命令行里面进行push了
之前克隆了远程仓库,就把别名配置一起进行了克隆
git push origin master
A将远程仓库中的最新内容拉取到本地
拉取利用pull命令,拉取是读操作,不需要校验身份
git pull origin master
冲突的解决(★★★)
多人开发肯定会出现代码冲突的情况,冲突情况的产生,是多个人同时修改了一个文件,例如,A修改了index.html文件,B也修改了index.html文件;A进行了提交,那么B就不能提交了
程序员B需要先把服务器的最新代码拉取到本地,当程序员B 输入了 pull 命令后,命令行里面会进行提示
此时文件里面内容就会发生变化
程序员B就需要去多余的代码,然后把里面的内容改成需要的内容就可以了
git commit -m 日志
git push origin master
非团队协作开发(★★)
一般在使用一些开源框架的时候会遇到,当我们去使用别人写好的一些框架,觉得里面实现的功能不完善,或者你有更优的实现方式,就可以利用github上面 Fork来进行拷贝到自己的账户中
fork完后,我们就可以把服务器里面的代码clone到本地
git clone 仓库地址
后续就可以进行修改,添加到暂存区,然后提交到git仓库,推送到服务器
git add 文件
git commit -m 日志信息
git push 仓库地址
此时已经把代码改好,并且推送到了自己的github账户中,此时我们需要把修改好的代码推送给原作者
点击 New pull requests 跳转到创建新请求的页面
点击按钮会跳转到发送页面,填写主题和描述,点击create pull request即可,此时原作者就能收到信息
原作者如果想看一些代码的变化,可以参照下图
原作者觉得修改不错,可以进行合并
Git高级用法(★★★)
SSH免登录
利用SSH协议去进行提交,可以进行免登录操作,实现其原理用的是公钥与私钥,公钥跟私钥是成对呈现,打个比喻:公钥就是一个门锁,私钥就是打开门锁的钥匙,公钥保存在github的账户中(远程服务器中),私钥保存在客户端,当客户端进行push的时候,会携带私钥,远程服务器就会去比对是否匹配,如果匹配,那么push成功
公钥:保存在github账户中,也就是在远程服务器中
私钥:保存在客户端
生成密钥
ssh-keygen 生成的密钥在C:\Users\当前用户名称.ssh 文件夹里面
在github中添加公钥
找到 id_rsa.pub文件,这个就是公钥,复制里面的内容,到github上,点击用户头像,选择settings
此时就可以通过github上面ssh的协议地址进行push代码了
小结
Git忽略清单
将不需要被git管理的文件名字添加到此文件中,在执行git命令的时候,git就会忽略这些文件
git忽略清单文件名称叫: .gitignore
仓库的详细说明
在仓库根目录添加一个 readme.md 文件即可,在里面写上内容,push到服务器后,默认在github里面就能看到仓库的详细说明了
Git相关命令整理
git config --global user.name //配置姓名
git config --global user.email //配置邮箱
git config --list //查看配置信息
git init //初始化本地仓库
git status //查看文件状态
git add 文件名 //添加某个文件到暂存区,如果写 . 代表当前文件夹下所有的文件、
git commit -m 日志说明 //提交到本地仓库
git log //查看提交记录
git checkout 文件名 //撤销,让暂存区文件覆盖工作区间文件
git rm --cached 文件名 //在暂存区移除相应文件
git reset --hard 提交ID //恢复到指定版本
git branch //查看分支
git branch develop //创建分支
git checkout 分支名 //切换分支
git merge //合并分支
git branch -d 分支名称 //删除分支
git clone 地址 //克隆远程仓库
git push 地址 分支名 //往服务器推送
git pull 地址 //将服务器代码拉取到本地
git remote add 名称 地址 //给地址取别名
git push -u origin master //-u的参数让git记录信息,下次只需要 git push 就能进行提交
ssh-keygen //生成一对密钥