Git分布式版本控制工具
1、目标
了解Git基本概念
能够概述git工作流程
能够使用Git常用命令
熟悉Git代码托管服务
能够使用idea操作git
2、概述
2.1、开发中的实际场景
一、备份
二、代码还原
三、协同开发
四、追溯问题代码的编写人和编写时间(扣工资警告)
2.2、版本控制器的方式
一、集中式版本控制工具
二、分布式版本控制工具 如Git
分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样工作的时候,无需联网,版本库就在自己的电脑上。多人协作时只需要将各自的修改推送给对方,就能互相看到对方的修改。
2.3、Git的特性
速度快
简单的设计
对非线性开发模式有强力支持(允许成千上万个并行开发的分支)
完全分布式
有能力高效管理类似Linux内核一样的超大规模项目
2.4、git的由来
Linus 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
2.5、Git工作流程图
命令:
1.clone(克隆):从远程仓库中克隆代码到本地仓库
2.checkout(检出):从本地仓库中检出一个仓库分支然后进行修订
3.add(添加):在提交前先将代码提交到暂存区
4.commit(提交):提交到本地仓库。本地仓库中保存修改的各个历史版本
5.fetch(抓取):从远程仓库,抓取到本地仓库,不进行任何的合并多做,一般操作比较少。
6.pull(拉取):从远程库拉到本地库,自动进行合并(merge),然后放到工作区,相当于fetch+merge
7.push(推送):修改完成后,需要和团队成员共享代码时,将代码推送到远程仓库
3、Git安装与常用命令
ls/ll 查看当前目录有哪些文件 ,ll可以还能够查看当前目录的隐藏文件
cat 查看文件内容
touch 创建文件
vi vi编辑器
3.1.3 为常用指令配置别名
有些常用的指令参数非常多,每次都要输入好多参数,我们可以使用别名
1.打开用户目录,创建.bashrc
文件
部分windows一同不允许用户创建点号开头的文件,打开Git Bash,执行 touch ~/.bashrc
**~**表示当前用户的根目录
2.在.bashrc
文件中输入如下内容:
#用于输出git提交日志
alias git-log='git log --pretty=oneline --all --graph --abbrev-commit'
#用于输出当前目录所有文件及基本信息
alias ll='ls -al'
3.在gitbash中,执行source ~/.bashrc
3.1.4 解决GitBash乱码问题
1.打开GitBash执行下面命令
git config --global core.quotepath false
2.${git_home}/etc/bash.bashrc 文件最后加入下面两行
export LANG="zh_CN.UTF-8"
export LC_ALL="zh_CN.UTF-8"
3.2、获取本地仓库
要使用Git对我们的代码进行版本控制,首先要获得本地仓库
1.在电脑的任意位置创建一个空目录(如D:\GitRepository)作为本地Git仓库
2.进入这个目录中,点击右键打开Git bash窗口
3.执行命令git init
4.如果创建成功后可在文件夹下开到隐藏的.git目录
3.3、基础操作指令
3.3.1、查看修改的状态(status)
作用:查看修改的状态(暂存区、工作区)
命令形式:git status
3.3.2、 添加工作区到暂存区(add)
作用:将一个或多个文件的修改添加到暂存区
命令形式:git add 单个文件名|通配符
例如将所有修改的加入到暂存区:git add .
3.3.3、提交暂存区到本地仓库(commit)
作用:提交暂存区内容到本地仓库的当前分支
命令形式:git commit -m '注释内容'
3.3.4、查看提交日志(log)
在3.1.3中配置的别名git-log
包含了这些参数,所以后续可以直接使用指令git-log
作用:查看提交记录
命令形式:git log[option]
3.3.5、版本回退
作用:版本切换 有很多版本,有时候需要版本切换
命令形式:git reset --hard commitID
-
commitID可以使用
git-log
或git log
指令查看 -
如何查看已经删除的记录?
git reflog
3.4、分支
3.4.1、查看本地分支
git branch
3.4.2、添加本地分支
git branch 分支名
HEAD的意思
有多个分支时,我们只能对其中一个分支进行修改,HEAD -> 分支,该分支就是目前修改的分支
3.4.3、*切换当前分支
- 切换到已有的一个分支
git checkout 分支名
- 切换到一个不存在的分支(创建并切换)
git checkout -b 分支名
3.4.4、*合并分支
将一个分支上的提交合并到另一个分支
git merge 分支名
-
一般将其他分支合并到master
先用git checkout master切换到master分支
然后再用git merge 分支名 将该分支合并到master
3.4.5、删除分支
不能删除当前分支,只能删除其他分支
git branch -d 分支名 删除分支时,需要做各种检查
git branch -D 分支名 删除分支时,不做任何检查,强制删除
3.4.5、解决冲突
在多个分支上对文件进行修改时可能会产生冲突,例如同时修改了同一个文件的同一行,这时要手动解决冲突。
步骤:
1.找到处理文件中冲突的地方
2.将解决完冲突的文件加入暂存区(add)
3.提交到仓库(commit)
此时执行merge合并命令,会提示冲突
此时发生冲突的file01.txt文件
对file01.txt手动修改,改成我们希望的合并后的样子,解决冲突
添加到暂存区并提交到本地仓库
成功解决冲突,完成合并
3.4.9、开发中分支使用原则与流程
4、Git远程仓库
4.1、常见的远程仓库服务
国外的github.com
国内的码云gitee.com
4.2、注册码云
有手就行
4.3、创建远程仓库
有手就行
4.4、配置SSH公钥
1.生成SSH公钥
ssh-keygen -t rsa
不断回车
2.在Gitee设置公钥
获取公钥 cat ~/.ssh/id_rsa.pub
在Git Bash中选中公钥(会自动复制选中内容),粘贴到gitee->右上角头像->设置->SSH公钥。
3.检查公钥是否成功配置
ssh -T git@gitee.com
输入yes
4.5、操作远程仓库
4.5.1.添加远程仓库
先初始化本地库,然后与已创建的远程库进行对接
命令:git remote add <远端名称> <仓库路径>
- 远端名称,默认时origin,取决于远端服务器设置
- 仓库路径,从远端服务器获取此URL
4.5.2、查看远程仓库
git remote
4.5.3、推送到远程仓库
git push [-f] [--set-upstream] [远端名称[本地分支名][:远端分支名]]
-
如果远程分支名和本地分支名相同 ,可以只写本地分支
git push origin master`
-
-f 表示强制覆盖
-
–set-upstream 推送到远端的同时并且建立起和远端分支的关联关系
- git push --set-upstream origin master
-
如果当前分支已经和远端分支关联,则可以省略分支名和远端名
git push 将master分支推送到已关联的远端分支
4.5.4、查看关联关系
git branch -vv
4.5.5、从远程仓库克隆
git clone <仓库路径> [本地目录]
本地目录可以省略,会自动生成一个本地目录,名称为仓库路径URL .git前的名称
4.5.6、从远程仓库抓取和拉取
抓取:将远程仓库里的更新都抓取到本地,不会进行合并
git fetch [remote name] [branch name]
拉取:将远程仓库的修改拉到本地并自动进行合并,相当于fetch+merge
git pull [remote name] [branch name]
4.5.7、解决合并冲突
其思想与解决本地分支冲突一致