git 介绍
- git是免费、开源的分布式版本控制工具
- 能快速高效处理各类项目,解决了集中式版本控制的缺陷【服务器down掉,协同操作就不可行了】,
- git的服务器断网也可以开发,因为版本控制是在本地进行的,每个客户端保存的也是整个完整项目(包含历史记录上的,相对来说更加安全)
- 基于远程服务器的远程代码仓库,一般称为远程库
git 现阶段代码托管中心
* 局域网:gitLab
* 互联网:gitHub【外网】、Gitee码云【国内网站】
git 基本工作流
- 工作区【代码存放本地磁盘的目录】、执行命令
git add
到第二步 - 暂存区【临时存储】执行命令
git commit
到第三步 - 本地库【历史版本-无法删除】执行命令
git push
到第四步 - 远程库
安装及初始化操作
git官网安装 :
https://git-scm.com/downloads
git init
新建项目的时候,初始化本地库;当然如果存在项目直接git clone
了项目即可;操作完成会生成对应的.git文件- 设置用户签名【首次安装git必须设置】,用来区分是哪个操作者提交的代码的
git config --global user.name [名字]
git config --global user.email 【邮箱】
ssh免密登录
1、执行命令 ssh-keygen -t rsa -C “yan_yan@.xxx.com”
直接敲三次回车,不用输入【输入密码,通常不输入,否则每次提交拉取代码就很麻烦】
ssh-keygen
用于ssh免登录协议生成免密的-t rsa
其中-t表示指定的算法,rsa即著名的非对称算法-C “yan_yan@xxx.com”
-c表示描述,一般后面加的邮箱
2、执行完上面命令根目录就生成了.ssh文件,里面包括两个文件私钥id_rsa
、公钥id_rsa.pub
3、将~/.ssh/id_rsa.pub
公钥文件内的内容复制在gitlab中找到settings、ssh keys然后生成密钥即可
- gitlab的ssh生成私钥
git命令
创建远程库别名
一般提交的时候远程库链接太长,创建别名方便提交
// 创建git远程库别名
git remote -v // 查看当前远程库是否有别名
// 创建别名,创建完成会有两个对应的地址,fetch、push 表示拉取推送
git remote add 别名 远程库地址名称
克隆代码【包括:拉取代码、初始化本地库、创建别名origin】
git clone 代码链接 // 克隆代码,不需要登录账号
git clone --depth=1 *** // 拉取代码,拉取commit个数
基本工作流
git status // 查看工作区状态
git add // 添加暂存区
git rm --cache 文件名 // 将暂存区域的文件删除,但是本地文件还是存在
git commit - m “注释信息” // 提交本地库
git push 【远程库】 分支名 // 推送代码到远程库
git pull 【远程库】 分支名 //更新本地代码, 拉取远程库代码【拉取代码会自动提交到本地库】
基础命令
// 查看提交记录
git reflog // 查看基础信息
git log // 查看详细提交版本记录【提交者、提交时间、提交版本号】
/*回退或者前进版本【回退到你--hard版本号的版本】*/
git reflog 查看版本号
git reset --hard 版本号
分支相关操作
git branch 分支名 // 创建分支
git branch -v // 查看分支以及分支最后一次提交记录
git checkout 分支名 // 切换分支,加上参数 -b 就是切换并且创建分支
git fetch 分支名 // 拉取远程分支
git merge 分支名 // 将制定分支合并到当前分支
// 删除分支
git branch -D bug_yan // 删除本地的bug_yan分支
分支git push origin --delete bug_yan //删除远程的bug_yan
本地暂存文件
git stash [message] //暂时保存在本地,message为本次保存的注释
git stash list // 查看所有保存的记录列表
git stash pop stash@{num} //恢复,num是可选项,通过git stash list可查看具体值。只能恢复一次
git stash clear //删除所有保存
git stash drop stash@{num} // 删除某个保存,num是可选项,通过git stash list可查看具体值
部分命令演示
- 创建别名
git commit信息
&&git relog 查看简单的版本信息
git reset 回退操作
- 查看当前分支指向和版本号
- 查看本地分支以及分支最后一次提交记录
git 分支
分支: 版本控制中有需要同时多任务开发,故需要为每个任务创建分支,程序员在自己分支开发,不会影响主分支和其他分支,分支的底层是指针的引用
分支冲突::不同分支修改同一个文件,系统不知道取誰的修改,故是冲突需要我们人为解决;解决完冲突需要重新添加提交
团队协作
查看git信息
git config --global --list
查看用户配置的name和email
git config --local --list
查看当前仓库配置信息
代码托管中心
同团队协作:同一团队的,设置权限限制。才有push权限
跨团队协作:fork一个项目A成为新项目B,然后push到B【版本由自己本地控制】,再向原来项目发起pull request,审核通过,A merge B即可
- github组内协作邀请成员
git项目规范
持续更新~
其他
- 创建忽略文件
- 因为有些包体积大,有些包只是编辑器生成的效果,所以创建忽略文件,设置不上传文件
- 文件是以 .gitignore后缀名,建议存放在项目根目录
// .gitignore文件
.history // 忽略.history文件
*.log // 忽略.log 后缀名的文件
- git是按照行信息为基础维护文件的
- git控制版本是通过调用指针指向版本信息
参考
https://www.bilibili.com/video/BV1vy4y1s7k6?p=45