目录
一、版本控制介绍
1. 版本控制介绍
2. 版本控制工具
3. git简介
二、git安装与配置
1. 下载git
2. 安装git
2. 配置git
三、git代码托管服务
1. 常见的git代码托管服务
2. 注册码云帐号【这里介绍一种的用法,其它也是一样的操作】
3. 创建远程仓库
四、git命令-操作本地仓库
1. 获取仓库
1 方式1克隆项目仓库
2 方式2本地创建仓库
2. 本地仓库操作
1 工作区,暂存区和版本库
2 常用命令
3 操作示例
3. 小结
五、git命令-操作远程仓库
1. 常用命令
2. 操作示例
1 查看远程仓库:git remote
2 添加远程仓库:git remote add
3 克隆远程仓库:git clone
4 推送到远程仓库:git push
5 从远程仓库拉取:git pull
3. 小结
六、git命令-操作分支与标签
1. 分支操作
1 分支介绍
2 常用命令
3 操作示例
1 查看分支:git branch
2 创建分支:git branch 分支名称
3 切换分支:git checkout 分支名称
4 推送分支到远程仓库:git push
5 合并分支:git merge
2. 标签操作
1 标签介绍
2 常用命令
3 操作示例
2 创建标签:git tag 标签名
3 推送标签到远程仓库:git push 远程仓库名 标签名
4 检出标签:git checkout -b 分支名 标签名
3. 小结
七、idea整合git
1. 在idea中配置git
2. 获取git仓库
3. 本地仓库操作
1 添加到暂存区
2 提交到本地仓库
3 查看日志
4. 远程仓库操作
1 查看远程仓库
2 推送到远程仓库
3 从远程仓库拉取
5. 分支操作
1 查看分支
2 创建分支
3 切换分支
4 推送分支到远程仓库
5 合并分支
一、版本控制介绍
1. 版本控制介绍
版本控制(Revision control)是一种软件工程技巧。籍以在开发的过程中,确保由不同人所编辑的同一档案(项目代码)都得到更新。
利用版本控制,可以:
-
保存并可以回溯代码的历史版本
-
可以切换不同版本的代码
-
多人协同开发一个项目
-
备份源代码
-
协同开发时定位修改代码的责任人
2. 版本控制工具
-
CVS:早期版本管理软件
-
ClearCase:IBM企业级大型版本管理工具, 收费。
-
VSS:微软推出的版本管理工具, 较少使用
-
SVN:市面最流行的版本管理工具之一,拥有CVS所有功能,修复了CVS的不足
-
GIT:分布式版本管理工具。已经是大势所趋。Linus Torvalds开发的 (Linux)
3. git简介
Git 是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过Git 仓库来存储和管理这些文件,Git 仓库分为两种:
-
本地仓库:开发人员自己电脑上的 Git 仓库
-
远程仓库:远程服务器上的 Git 仓库
git基本操作:
-
commit:提交,将本地文件和版本信息保存到本地仓库
-
push:推送,将本地仓库文件和版本信息上传到远程仓库
-
pull:拉取,将远程仓库文件和版本信息下载到本地仓库
二、git安装与配置
1. 下载git
git下载地址:Git - Downloads
2. 安装git
双击git安装包,一路下一步直到最后。注意==安装的路径里,不要有中文、空格、特殊字符==
安装成功后,在桌面上右键会有以下选项:
-
Git GUI Here:在当前文件夹里打开git图形窗口界面
-
Git Bash Here:在当前文件夹里打开git命令行界面
2. 配置git
安装好git之后,要使用git进行版本控制,通常需要配置一下自己的姓名和邮箱信息,用于在每次提交代码时作为自己的身份标识,这是非常重要的。
操作步骤如下:
-
在任意文件夹里右键(例如,在桌面上右键),Git Bash Here,打开git命令行界面
-
输入命令:
-
git config --global user.name '姓名'
建议都使用英文+数字 -
git config --global user.email '邮箱地址'
“邮箱地址”建议用真实邮箱地址 -
git config --global credential.helper store
让git存储gitee的帐号和密码,不需要每次操作远程仓库都输帐号密码
-
-
验证是否配置成功:
-
git config --list
-
三、git代码托管服务
1. 常见的git代码托管服务
Git中存在两种类型的仓库,即本地仓库和远程仓库。我们在git介绍里所谓的“git远程仓库”,其实就是这里所说的“git代码托管服务”
那么如何搭建Git远程仓库服务呢?其实我们可以借助互联网上提供的一些代码托管服务来实现,其中比较常用的有:
-
GitLab (地址: The most-comprehensive AI-powered DevSecOps platform | GitLab ),是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务
-
GitHub( 地址:https://github.com/ ),是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本库格式进行托管,故名gitHub
-
码云(地址: Gitee - 基于 Git 的代码托管和研发协作平台 ),是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快
-
BitBucket(地址:Bitbucket | Git solution for teams using Jira) ,是一家源代码托管网站,采用Mercurial和Git作为分布式版本控制系统,同时提供商业计划和免费账户
远程仓库用什么,看公司的要求
2. 注册码云帐号【这里介绍一种的用法,其它也是一样的操作】
1 注册gitee帐号
打开Gitee - 基于 Git 的代码托管和研发协作平台,点击注册按钮,输入信息进行注册
2 登录gitee帐号
点击登录按钮,进入登录页面。输入刚刚注册的帐号信息,点击登录
3. 创建远程仓库
一个仓库,通常用于存储一个项目的代码。git会把一个项目的所有历史版本记录和代码,全部存储到一个仓库里。所以,我们可以理解为:一个仓库,就是一个项目的代码。一个项目,要创建一个仓库
1 点击“新增仓库”
2 设置仓库基本信息
3 查看仓库地址信息
查看空仓库的地址
如果新创建的仓库,里边没有任何内容,会显示以下界面
查看非空仓库的地址
如果仓库里已经有内容了,要获取仓库的地址,需要点击以下按钮:
4 邀请仓库成员
新创建的仓库,只有自己一个成员(自己是管理员),即只有自己能够向仓库里推送代码。而在实际开发中,一个项目通常是由一个小组的成员共同完成的,这就需要其它人员也能够看到此仓库、能够向仓库里推送代码。
为了实现小组共同完成项目,需要给仓库添加成员:
四、git命令-操作本地仓库
1. 获取仓库
在实际开发中,通常有两种方式获取项目仓库:
-
作为架构师或Leader,需要:
-
创建空的共享仓库(例如gitee)
-
在自己的本机上创建项目版本仓库,推送到共享仓库(例如gitee)里,供组员clone得到初始项目仓库
-
-
作为项目组普通成员,只要:
-
直接从共享仓库(例如gitee)里克隆项目仓库到本机即可
-
获取本地仓库里的代码,开始开发工作
-
当我们得到仓库之后,这个仓库文件夹,就是项目文件夹:
-
开发人员在仓库文件夹里直接写代码
-
完成功能后,把代码提交到本地仓库,留下一次提交记录
1 方式1克隆项目仓库
在任意文件夹里打开git bash窗口,执行命令:git clone 仓库地址
如果帐号密码输错了,导致后边所有远程仓库的操作都失败,或者连接不上可以:
-
清理一下旧的远程仓库的认证信息:
git config --system --unset credential.helper
-
然后重新操作,会让我们重新输入gitee的帐号和密码
2 方式2本地创建仓库
创建一个文件夹,在文件夹里打开git bash容器,执行命令:git init
2. 本地仓库操作
1 工作区,暂存区和版本库
在git的版本库里,有三个区域是必须要了解的:
-
工作区:项目仓库文件夹里就是工作区,我们直接在这个文件夹里编辑代码。
-
版本库:工作区内有一个隐藏的
.git
就是版本库,其中保存了项目的所有变更历史记录。如果把这个.git
删除掉,仓库就成为普通文件夹了,git不能再进行版本控制了 -
暂存区:
.git
里的index
文件就是暂存区,也叫stage。暂存区是临时保存修改文件的地方
三个区域的运作模式:
工作区里的文件状态有三种:
-
untracked:未跟踪。表示文件是新创建的,还没有纳入到git的管控
-
tracked:已跟踪,已纳入git版本控制,随着操作又有不同的状态变化
-
Unmodifed:文件未修改,没有新的变化
-
Modified:文件已被修改
-
Staged:文件已暂存,已添加到暂存区了
-
2 常用命令
3 操作示例
1 查看仓库状态:git status
在tlias仓库文件夹里,先后执行命令:
-
查看仓库状态:
git status
-
在仓库里创建文件a.txt
-
再次查看仓库状态:
git status
Untracked files:未被git管控的文件有a.txt
2 添加文件到暂存区:git add
执行命令:
1.添加到暂存区:git add a.txt
,把a.txt添加到暂存区。
如果有多个文件一起添加,可以使用git add 文件1 文件2 ...
也可以用git add ./*
把当前文件夹里所有 有变化的文件全部添加到暂存区
2.再次查看仓库状态:git status
3 取消暂存或切换版本:git reset
取消暂存
执行命令:
-
取消暂存:
git reset a.txt
,把a.txt
恢复成暂存命令执行之前的状态(已修改未暂存) -
查看状态:
git status
,发现a.txt变成了未暂存的状态
切换版本
如果要恢复成历史记录中的某个版本,可以执行命令:git reset --hard 版本号
2.3.4 提交到版本库:git commit
如果修改了某些文件,想要提交版本,必须先添加到暂存区才能提交:
-
把文件添加到暂存区:
git add 文件1 文件2 ...
-
把暂存区内容提交到版本库:
git commit -m '本次提交的描述'
5 查看版本记录:git log
如果想要查看历史提交记录,可以执行命令:git log
3. 小结
获取本地仓库,有两种方式:
-
直接克隆远程仓库,得到本地仓库:git clone 远程仓库的地址
-
本地文件夹里 初始化本地仓库:在本地文件夹里打开Git Bash Here,执行命令 git init
本地仓库操作:
-
如果新增或修改或删除了文件,需要:
把文件添加到暂存区
git add 文件路径 文件路径 文件路径...
把暂存区的文件取消暂存
git reset 文件路径 文件路径 ...
然后把暂存区里所有内容一次性提交到本地仓库,需要:
git commit -m '提交的描述信息'
-
要查看过去的提交日志记录,需要:
git log
-
要查看本地仓库的状态,需要:
git status
五、git命令-操作远程仓库
如果仅仅把代码提交到本地仓库是不够的,我们是项目组合作开发,所以你提交的代码还要推送到共享仓库里,组内其它成员可以拉取到你提交的代码。反之,组内其它成员提交的代码,也要推送到共享仓库里,你也可以从共享仓库里拉取得到其它人的代码。
1. 常用命令
2. 操作示例
1 查看远程仓库:git remote
-
查看远程仓库:
git remote
origin
是默认的远程仓库缩写代号。从远程仓库里克隆下来的项目,必定有这个名称 -
查看远程仓库详细信息:
git remote -v
2 添加远程仓库:git remote add
添加远程仓库:git remote add 仓库地址代号 仓库地址
注意:实际开发中,从某个远程仓库里克隆下来的项目,通常不需要额外再添加第二个远程仓库
刚刚仅作为语法的效果演示,实际开发基本不会这样操作,所以这里取消关联第二个远程仓库
git remote remove 仓库名
3 克隆远程仓库:git clone
-
语法:
git clone 远程仓库地址
-
注意:在之前的“获取仓库”一节中,已经演示过了,效果如下图所示:
4 推送到远程仓库:git push
当你的某个功能开发完成后,已经提交到了本地仓库,还需要再做一步:推送到远程仓库,其它人才可以从远程仓库里拉取到你的代码
-
语法:
git push 远程仓库名 分支名
注意:第一次向远程仓库(例如gitee)推送时,会弹出窗口,需要输入远程仓库(例如gitee)的帐号和密码
5 从远程仓库拉取:git pull
如果组内其它人向远程仓库里推送了代码,而你想要从远程仓库里拉取得到最新的代码,就要执行拉取命令了
-
语法:
git pull 远程仓库名 分支名
注意:如果本地仓库是自己创建的(而不是克隆下来的),并且有文件,然后从远程仓库里拉取代码时会报错fatal: refusing to merge unrelated histories
解决方法:git pull origin master --allow-unrelated-histries
3. 小结
进入公司以后,需要获取到本地仓库:
-
克隆:
git clone 远程仓库地址
, 得到本地仓库。本地仓库里有所有的历史提交记录和所有的源码
然后一个仓库,就是一个项目。可以编写代码,完成功能。当功能完成以后,需要:
-
添加到暂存区:
git add 文件路径
。如果所有有变化的文件都是这一次功能的,可以一次性加:
git add .
-
提交到本地仓库:
git commit -m '描述信息'
添加一次提交记录,xxx在xxx时间修改了xxx文件
-
推送到远程仓库:
git push origin master
语法:git push 远程仓库地址简称 分支名
如果不推送,组里其它人就不能获取最新的代码
如果要获取其它人推送的最新代码:
-
从远程仓库拉取:
git pull origin master
语法:git pull 远程仓库地址简称 分支名
六、git命令-操作分支与标签
1. 分支操作
1 分支介绍
分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN。
如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了Git又学会了SVN!
分支在实际中有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交并推送,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。
2 常用命令
仓库里默认会有一个分支,名称是master
删除本地分支:git branch -d 分支名
删除远程分支:git push origin -d 分支名
3 操作示例
1 查看分支:git branch
-
查看本地分支:
git branch
-
查看远程分支:
git branch -r
-
查看所有分支:
git branch -a
2 创建分支:git branch 分支名称
-
创建新分支:
git branch 分支名称
3 切换分支:git checkout 分支名称
-
切换到指定分支:
git checkout 分支名称
-
注意:切换分支前,要把工作区的内容提交或缓存起来。否则切换分支时会导致分支之间干扰混乱
4 推送分支到远程仓库:git push
我们刚刚创建的分支,都是本地分支,远程仓库里还没有这个分支。要推送到远程仓库的话:
-
推送到远程仓库:
git push 远程仓库名 分支名
5 合并分支:git merge
实际开发中,我们往往使用分支来开发自己的功能。当功能开发完成后,需要把功能分支的代码合并到dev分支。
-
合并分支:
git merge 分支名
,把指定分支合并到当前分支
2. 标签操作
1 标签介绍
git里的标签,是指把某次提交状态的代码打上一个标记。通过这个标签,可以很方便的切换到标记时的代码。开发中,我们通常会把代码里某个特别稳定的版本打上标签,例如:
2 常用命令
3 操作示例
1 查看标签:git tag
-
查看已有标签:
git tag
2 创建标签:git tag 标签名
-
创建标签:
git tag 标签名
,在当前提交的基础上创建标签
3 推送标签到远程仓库:git push 远程仓库名 标签名
我们创建的标签仅仅是在本地仓库里,如果想将标签推送到远程仓库,可以使用推送命令
-
推送标签:
git push 远程仓库名 标签名
4 检出标签:git checkout -b 分支名 标签名
如果想要切换到标签对应的代码,需要执行检出标签的命令
-
检出标签:
git checkout -b 分支名 标签名
,将标签对应的代码检出成为一个新的分支分支名:不能与已有分支名重复
3. 小结
实际开发中,通常是要开发一个功能,就创建一个新分支;要修改一个bug,就创建一个新分支
相关的操作命令:
-
创建分支:git branch 分支名
-
查看分支:git branch 查看本地分支; git branch -r 查看远程分支; git branch -a 查看所有分支
-
切换分支:git checkout 分支名
然后在分支里编写代码,添加暂存区,提交到本地仓库
注意:切换分支时,还未提交的代码,将会带到 目标分支里。
-
推送分支到远程仓库:git push origin 分支名
-
合并分支:git merge 分支名 把指定分支合并到当前分支
-
删除分支:git brand -d 分支名 删除的是本地的分支
git push origin -d 分支名 删除远程仓库里的指定分支
七、idea整合git
1. 在idea中配置git
2. 获取git仓库
1 方式1克隆远程仓库
克隆远程仓库后,使用idea打开仓库代码(一个仓库就是一个项目)
-
打开idea时,从VCS版本控制系统里获取仓库
2 方式2初始化本地仓库
-
创建忽略文件
在开发中,有些文件是不需要纳入版本控制的。例如:target文件夹,.idea文件夹等。
想要让git忽略某些文件不管理,只要在==本地仓库的根目录==里创建一个文件.gitignore
(名称不要写错),在文件里配置要忽略的内容:
target/
.idea/
*.iml
2. 启用版本控制整合
3. 选择版本控制工具,使用git
3. 本地仓库操作
1 添加到暂存区
2 提交到本地仓库
1.点击提交按钮
2.输入提交描述信息
3 查看日志
4. 远程仓库操作
1 查看远程仓库
2 推送到远程仓库
点击推送按钮
3 从远程仓库拉取
5. 分支操作
1 查看分支
在idea的右下角,会显示当前分支。点击分支名称,会列出所有的分支,包括本地分支和远程分支
2 创建分支
基于当前提交创建分支:
给分支起名称:
3 切换分支
切换分支,即检出分支,操作如下:
4 推送分支到远程仓库
5 合并分支
先切换到master分支后,
再执行如下操作的效果是:把“feature-student”分支合并到当前的master分支