git应用
1. git概念
git是一个代码协同管理工具,用于多人协同开发时管理代码
git是一个开源分布式版本控制系统,可用于高效的管理大小项目
作用:
- 防止代码丢失,可以做备份
- 代码版本的管理,可以进行多个版本之间的跳跃
- 可以方便的将代码在多人之间进行共享传输
- 多人开发时,有各种模式可以方便代码管理
分布式和集中式
- 分布式:每一个结点都保存完整的代码,没有统一的中央服务器,节点之间相互推送下载代码完成代码共享,例如git
- 集中式:代码集中管理,每次完成的代码上传到中央管理器,然后再统一从中央管理器中下载代码使用,例如svn
2. git的特点
- git可以管理各种文件,特别是代码项目,多在Linux和Unix系统中使用分布式管理,不同于集中式,这是git和svn的核心区别
- git可以很好的支持分支,方便多人协作工作
- git分布式代码分家安全,有全球唯一的commit版本号
- git是开源的系统
- 使用git可以脱网工作,且数据传输速度较快
3. git安装
-
Windows下:https://gitforwindows.org/
-
Linux下:
sudo apt install git -y
查看git的版本
git --version
4. git配置
主要配置git本地仓库的用户名和邮箱
git config
三种配置级别:
git config --system 系统级别(所有用户可共享的配置)
Linux: /etc/gitconfig
git config --global 用户级别(当前终端所属用户的)
Linux: ~/gitconfig
git config 项目级别(当前所在文件夹或目录)
Window/Linux: ./.git/config
4.1 查看所有配置信息
git config [--system|global] -l
4.2 配置用户名和邮箱
git config --global user.name "xxx"
git config --global user.email "[email protected]"
5. git的基本操作
- 初始化git
git init
在某个目录下初始化仓库后会自动产生git目录,改目录下工作的所有文档可使用git进行管理。【实际上创建本地的仓库,标识当前目录下存在一个.git目录】
【注意】如果当前已存在.git目录,则先删除再初始化
- 查看仓库状态
git status
可以查看当前仓库的当前分支(默认主分支)上的未提交的资源状态,命令的结果中包含建议执行的命令
- 添加文件
可以将当前目录中所有的文件或指定的文件添加到暂存区
git add 文件名|.|*
- 删除暂存区的文件
在没有提交之前,可以将已添加到暂存区的文件删除
git rm --cached 文件名|-r .|*
- 提交暂存区
将暂存区的文件提交到本地仓库中,每一次提交都必须注释相关信息
git commit -m "本次提交的信息"
- 查看提交版本信息
查看当前提交的版本日志
git log [--pretty=oneline|email|full|fuller] [-n 数值]
- 比较文件
本地文件与本地的仓库文件进行比较,显示出不同的地方、
git diff <文件名>
6. git的恢复操作
-
从本地仓库恢复本地文件
如果本地文件发生改变之后,想恢复到之前提交的版本内容,可以进行恢复
git checkout <文件名> ...
-
丢弃工作区的修改
放弃当前工作目录下某一个文件的修改,实际上同一个命令
git checkout -- <文件名> ...
-
本地仓库文件的移动和删除
【注意】移动和删除后,需要再次执行 git commit
- 在本地仓库中将源文件移动目的目录中(本地也会移动)
git mv <源文件> <目的目录>
- 在本地仓库中删除指定的文件(本地也会删除)
git rm <文件名>
-
回到某一个版本
-
回到上一个版本(commit)
git reset --hard HEAD
-
回到指定的版本(commit)
git reset --hard <commit id>
-
查看历史版本记录
git reflog
【注】回到某一个版本,本地文件也会发生变化,但不是真的删除,还可以通过
git reset --hard <commit id>
命令再恢复之前的版本 -
7. 标签管理
标签:在当前工作的位置添加快照,保存工作状态,一般用于版本的迭代
-
创建标签
git tag <标签名称> 创建标签 git tag <标签名称> -m <提示信息> 创建标签并设置提示信息 git tag <标签名称> <commit id> 指定某一个commit id 处创建标签
【注】一个提交版本可以存在多个标签
-
查看标签
git tag
-
查看详细标签
git show <标签名>
-
删除标签
对已存在的标签可以删除
git tag -d <标签名>
-
恢复到指定的标签位置
git reset --hard <标签名>
【注】恢复的文件只限于本地仓库中的文件,本地新增的文件并不会受到影响
8. 临时工作区管理
用于对当前工作区(暂存区)修改但未提交的文件进行保存,以便在之后的操作时,可以恢复,保存之后可以进行切换分支,恢复之前版本等操作,操作之后在恢复未完成的工作
-
创建保存临时工作区
git stash [save <message>]
当本地仓库中的文件修改后,并未提交时,可以保存临时工作区
保存临时工作区成功之后,当前的工作区(暂存区)与本地仓库保持一致。此时,修改且未提交的信息则会被保存起来
-
查看临时工作区
git stash list
-
使用指定的工作区
将之前未提交的修改的内容进行恢复,继续再修改
git stash apply stash@{编号}
-
使用最新的临时工作区并删除
git stash pop
-
删除指定工作区
git stah drop stash@{编号}
-
删除所有的临时工作区
git stash clear
9. 分支操作
分支主要用于多人协作工作,分支即获取原有代码,在此基础上创建自己的工作环境,单独开发,不会影响其他分支的操作,开发完成后再统一合并到主线分支中
创建分支的好处:安全,不影响其他人工作
9.1 分支的分类
注意:一个项目库只能有一个master分支和一个develop分支。项目库创建后,由版本管理员从master分支创建develop分支,项目组所有成员需要克隆服务器上的项目库到本地,然后再从develop分支创建自己的feature分支进行工作
9.2 分支操作
-
在当前的分支下创建新的分支
git branch <分支名称>
-
查看分支
git branch
-
切换分支
git checkout <分支名>
-
创建并切换分支
git checkout -b <分支名>
-
合并分支
将指定的分支合并到当前分支上
git merge <分支名>
-
衍合分支
git rabase <分支名>
在~/.gitconfig
中配置友好显示分支情况
[alias]
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s
%Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
【注】衍合,不会新增一个版本号,只是在当前分支上的最后一个版本重新生成新的版本号,分支的版本靠前放
-
删除分支
git branch -d|D <分支名称>
如果删除的分支没有合并,是不能用当前命令删除的,使用-D删除,表示强制删除指定分支
10. 远程仓库
gitee/github,以gitee为例
10.1 gitee仓库创建
- 打开浏览器,输入 gitee.com ,先登录,登录成功之后
- 新建仓库
本地生成公钥文件(ssh-keygen命令生成的),将公钥文件的内容复制到gitee上。
10.2 远程仓库的操作
-
设置本地仓库的远程仓库位置
git remote add <仓库名称> 远程仓库的地址
-
上传本地仓库的文件
-
第一次本地仓库上传到远程仓库时的命令:
git push -u origin master
-
之后再上传到远程仓库的命令:
git push
-
强制覆盖远程仓库的文件(强制上传):
git push -u --force origin master
-
-
远程仓库下载
-
第一次下载
git clone 远程仓库的地址(http,ssh)
【注】如果远程仓库给其他人下载,必须向设置它为开源的
-
其次下载远程仓库的最新的文件
git pull
-