Git 应用
一、Git概述
1.1 什么是Git
git 是一个代码协同管理工具,也称之为代码版本控制工具,代码版本控制或管理的工具用的最多的: svn、 git。
-
SVN
是采用的同步机制
,即本地的代码版本和服务器的版本保持一致(提交版本时,直接提交到服务器); -
Git
是采用异步机制
(分为本地仓库和远程仓库),本地提交的版本不会影响服务器的版本,只有本地的代码上传到服务器时才会同步。
git 是一个开源分布式版本控制系统,可用于高效的管理不同大小的项目, 05 年创造的,由林纳斯(Linux 之父)发明的。
1.2 git多人协同开发
代码版本管理工具主要的功能是 多人协同开发
,其 作用
是:
- 防止代码丢失,可以做备份;
- 代码版本的管理,可以进行多个版本之间的跳跃;
- 可以方便的将代码在多人之间进行共享传输;
- 多人开发时,有各种模式(分支、标签)可以方便代码管理。
1.3 git 的特点
- git 可以管理各种文件,特别是代码项目,多在 linux 和 unix 系统中使用
- 是分布式管理,不同于集中式,这是 git 和 svn 的核心区别
- git 可以很好的支持分支,方便多人协作工作 git 分布式代码分家安全,有全球唯一的
commit
版本号 - git 是开源的系统
- 使用 git 可以脱网工作(本地仓库),且数据传输速度较快
二、Git的安装与应用
2.1 Windows下Git的安装
下载地址:https://git-scm.com/downloads
一路next
2.2 Linux下安装
在Ubuntu系统下,基于apt安装
命令:
sudo apt-get install git -y
2.3 Git配置
三种配置级别
-
(1)
系统中所有的用户
都可以使用该配置,配置文件是:/etc/gitconfig
git config --system 配置信息
-
(2) 当前用户可使用该配置:配置文件是:
~/.gitconfig
git config --global 配置信息
-
(3) 当前项目可使用该配置,配置文件是:当前项目下的
./.git/config
git config
2.3.1 配置全局的用户名
给定git用户的名称(自定义)
git config --global user.name "zhb-git"
2.3.2 配置全局的用户邮箱
同配置用户名相同,自定义git用户的邮箱
git config --global user.email "1174333100@qq.com"
2.3.3 查看配置信息
配置信息后,可以查看配置信息,确认是都OK。
git config --list
#或
git config -l
2.4 Git常用指令
2.4.1 初始化本地仓库
在某个目录下,将当前目录作为本地仓库使用时。需要将此目录进行初始化:
git init
初始化命令执行成功后,会在当前目录下创建 .git
子目录。
2.4.2 添加文件到暂存区
将当前目录下的文件添加到暂存区中,
- 如果文件没有添加到暂存区时,显示的状态是红色的,
- 添加到暂存区之后,显示状态的颜色应该是绿色的。
查看文件的状态:
git status
添加文件到暂存区:
git add <文件或> ... | . | *
.
表示当前工作目录<文件>
表示具体的某一个文件全名(带后缀名)*
表示任意多个任意字符的文件,代表所有的文件及目录(目录中国的子文件及子目录)注意:添加到暂存区的文件没有存放在本地仓库中
可以将暂存区的文件删除:
git rm --cache <文件名> #删除暂存区的指定文件#或
git rm --cache -r . #递归删除所有文件(将暂存区的所有文件恢复到工作区)
注意:
git rm --cache -r .
命令可能会将仓库中的文件删除,如果出现这种情况,可以使用下面命令恢复:git restore --staged <file>...
git restore --staged <file>...
命令可以将暂存区文件还原
2.4.3 提交版本
将暂存区的文件,提交到本地仓库中,产生一个新的提交版本号(世界上唯一的)
git commit -m <提交说明> #将文件同步到本地仓库并且设置提示说明
注意:
- 一般提示时需要附加一些同步信息,在-m 后添加
- 所有对工作区的修改,如果想同步到仓库,都需要执行当前命令(add --> commit)
2.4.4 查看提交的版本信息
提交的版本 可以通过命令查看:
git log
可以限制显示版本号的数量:
git log -n 版本数量(具体的值: 1,2,3 等)
如果只想显示版本号和消息,可以单行显示:
git log --pretty=oneline
2.4.5 比较本地与仓库中的文件
在将文件提交到本地仓库之后,再次修改文件时,可以比较本地文件与仓库中的文件内容
比较:
git diff <file>
2.4.6 恢复操作
(1)、从本地仓库中恢复文件
git checkout <文件名>
aaa.txt 中的内容恢复到未修改之前的:
(2)、丢弃本地文件修改的内容
git checkout -- <文件名> #丢弃本地指定文件中的已经修改的内容( --两边都有空格)效果同上
(3)、本地仓库文件的移动和删除
无论移动还是删除,都会影响本地文件,修改后,必须再次提交版本 (再次执行 git commit)
git mv <源文件> <目的目录> #在本地仓库中将源文件移动目的目录中(本地也会移动)
删除:
git rm <文件名> # 在本地仓库中删除指定的文件(本地也会删除)
(4)、回到上一个版本
git reset --hard HEAD^ # HEAD 后面的^数量决定了回到上几个版本
(5)、回到指定的版本
git reset --hard <commit_id> #只需要 commit id 的唯一的前几位(至少4位)即可
(6)、查看所有的历史版本
git reflog #最新的操作始终在最上边
2.4.7 标签管理 (版本管理)
标签是在当前工作的位置添加的快照,用于保存工作状态,一般用于版本的迭代。
(1)、创建标签
在当前提交的版本上创建标签,如:
git tag 标签名 [-m "标签的消息"]
如果为指定提交版本号创建标签也可以的,如:
git tag <标签名称> <commit id> #指定某一个 commit id 处创建标签
(2)、查看标签
git tag
#或
git show <标签名称>
注意:如果出现了 : ,则需要按 q 退出。也可以在show命令上加参数 -q 。
(3)、删除标签
可以将标签(从版本号上)删除
git tag -d <标签名称>
(4)、恢复到指定标签
标签和版本号绑定的,在恢复代码版本时,可以使用标签
git reset --hard <标签名称>
2.4.8 临时工作区管理
临时工作区可以理解为某个区间,如:暂存区、当前工作区等。
(1)、创建临时工作区
目的:保存未提交文件的状态
- 红色【新文件、修改文件】未添加到暂存区的文件
- 绿色【已添加到暂存区的文件】
git stash
(2)、查看临时工作区
git stash list
注意:最近创建的临时工作区在列表的最上面,即 0号位置为最新创建的临时工作区。
(3)、使用指定工作区
git stash apply stash@{编号}
注意:在使用临时工作区时,当前工作区不能存在未提交的文件(暂存区必须是空的)
(4)、使用最新的临时工作区并删除(弹出)
git stash pop
(5)、删除指定的临时工作区
git stash drop stash@{编号}
(6)、删除所有的临时工作区
git stash clear
2.4.9 分支操作
分支主要用于多人协作工作,分支即获取原有代码,在此基础上创建自己的工作环境,单独开发,不会影响其他分支的操作,开发完成后再统一合并到主线分支中
创建分支的好处:安全,不影响其他人工作
(1)、分支的分类
按工程的项目进行代码分支的管理:以项目为准,存在master、develop
project(项目库)master(主线分支)hotfix(线上紧急 bug 修复分支)develop(开发分支)feature(功能分支)release(发布分支)bugfix(bug 修复分支)
(2)、查看当前分支
git branch
(3)、创建分支
I. 只创建分支
git branch <分支名称>
II. 创建并切换分支
git checkout -b <分支名称>
(4)、切换分支
git checkout <分支名称>
(5)、合并分支到当前分支
如果在当前分支下创建的新的分支存在新的提交的版本,则需要切换到当前分支下,可以将心的分支合并到当前分支。即父分支可以合并子分支。
如:
git merge <后代分支名称>
- 合并过程中如果没有冲突,直接合并后当前分支即为干净的状态,直接保存在本地仓库中
- 如果产生冲突,需要人为的选择,然后在进行 add 和 commit 的操作
- 在创建分支前,尽量保证当前分支是干净的,以减少冲突的发生
feature2
是develop分支的子分支, 子分支已提交了两个版本。
如果将feature2分支合并到develop分支上,则 需要先切换再合并。
(6)、删除分支
git branch -d < 分支名称>
(7)、衍合分支
git rebase <分支名>
效果同合并分支,但是不会创建新的版本号,只会更新父分支上最近提交的版本号(是在子分支创建之后提交的)
三、远程仓库
3.1 Gitee的远程仓库
远程仓库:中心服务器上的git仓库
- gitee:目前使用较多的是gitee(国内免费)
- github:国外免费,网速比较慢
- gitlab:私有仓库,企业内部搭建
gitee的网址:https://gitee.com/
需要注册账号,并登录。
3.2 配置gitee的ssh秘钥
gitee 支持http和ssh两个协议,http协议每次使用时,都需要手动输入用户名和口令,比较麻烦。
可以使用ssh协议,ssh协议支持公钥与私钥实现免密。
在gitbash的窗口中,生成公钥与私钥
命令如下
ssh-keygen
产看公钥:
cat ~/.ssh/id_rsa.pub
将此公钥粘贴在 gitee网页 —> 头像 下来菜单
选择 账号设置
菜单,在 设置页面,从 左边菜单
找到 SSH公钥
,点击之后,打开公钥设置界面,填写公钥名称和内容:
确认信息之后,点击【确定】
3.3 创建仓库
点击用户头像左边的 + 图标,在弹出的子菜单中选择 新建仓库 ,在打开页面,输入仓库的名称及介绍即可点击【创建】按钮。
3.4 本地仓库上传
3.4.1 首次上传
-
先将远程仓库的位置(ssh仓库位置)添加到本地仓库的配置中,
-
然后再上传,上 传时必须带
-u <远程仓库的名称> <分支名称>
git remote add origin git@gitee.com:disenQF/testgit2302.git
git push -u origin "master"
origin
是远程仓库的名称,可以自定义;
master
是远程仓库的分支名(默认的主分支名)。
3.4.2 再次上传
git push
3.4.3 强制上传
远程仓库的代码完全由本地仓库的代码替换
git push -u --force origin master
3.5 远程仓库下载
3.5.1 首次下载
通过
克隆
的方式下载的远程仓库
git clone git@gitee.com:用户名/仓库名
3.5.2 再次下载(更新)
git pull