Java高级之Git

Java高级之Git


第1章 Git简介

Git是一个免费的、开源的分布式版本控制系统,旨在快速高效地处理从小型到非常大的项目的所有内容。

Git易于学习,占用空间小,性能快如闪电。它超越了SCM工具,如Subversion,CVS,Perforce和ClearCase,具有廉价的本地分支,方便的暂存区域和多个工作流程等功能。

历史

Java高级之Git_第1张图片

作用

Java高级之Git_第2张图片

工作机制

Java高级之Git_第3张图片

版本控制工具

  • 集中式版本控制工具

    Java高级之Git_第4张图片

    • SVN是集中式版本控制系统,版本库是集中放在中央服务器的,所以首先要从中央服务器下载最新的版本,然后开发代码,写完代码后需要把自己的代码推送到中央服务器。
    • 缺点
      • 服务器单点故障
      • 容错性差
  • 分布式版本控制工具

    Java高级之Git_第5张图片

    • Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS)
    • 分为本地仓库和远程仓库
      • 本地仓库
        • 开发人员自己电脑上的Git仓库
      • 远程仓库
        • 远程服务器上的Git仓库
        • 可以实现团队内或跨团队协作
    • 优点
      • 容灾能力强
      • 本地版本管理
      • 异地协作
      • 灵活分支

代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。

  • 局域网
    • GitLab
  • 互联网
    • GitHub(服务器在国外)
    • Gitee,也称为码云(国内网站)

第2章 Git安装

2.1 官网

https://git-scm.com/

Java高级之Git_第6张图片

2.2 安装步骤

  1. 双击资料中的Git-2.36.1-64-bit.exe文件,点击Next

    Java高级之Git_第7张图片

  2. 选择安装位置,建议安装到非中文无空格的目录下,点击Next

    Java高级之Git_第8张图片

  3. 默认勾选即可,无需修改,点击Next

    Java高级之Git_第9张图片

  4. 选择开始菜单文件夹,默认即可,点击Next

    Java高级之Git_第10张图片

  5. 选择默认的编辑器,默认即可,点击Next

    Java高级之Git_第11张图片

  6. 默认分支名设置,还是默认设置(选择让Git决定,分支名默认为master),点击Next

    Java高级之Git_第12张图片

  7. 是否将Git添加到环境变量PATH中,选择第一项(不修改环境变量,只在Git Bash中使用Git),点击Next

    Java高级之Git_第13张图片

  8. 选择连接协议,默认即可,点击Next

    Java高级之Git_第14张图片

  9. 选择后台客户端传输协议,默认即可,点击Next

    Java高级之Git_第15张图片

  10. 配置Git文件的行末换行符,Windows使用CRLF,Linux使用LF,默认即可(自动转换),点击Next

    Java高级之Git_第16张图片

  11. 选择Git终端类型,默认即可(Git Bash),点击Next

    Java高级之Git_第17张图片

  12. 选择Git pull合并模式,默认即可,点击Next

    Java高级之Git_第18张图片

  13. 选择Git的凭据管理器,默认即可,点击Next

    Java高级之Git_第19张图片

  14. 其他配置,默认即可,点击Next

    Java高级之Git_第20张图片

  15. 实验选项配置,新特性,默认都不勾选,点击Install

    Java高级之Git_第21张图片

  16. 安装完成,取消勾选第二项,点击Finish

    Java高级之Git_第22张图片

  17. 在任何目录下右键出现以下两项说明Git安装成功

    Java高级之Git_第23张图片

2.3 配置全局用户签名

  • Git是分布式版本控制系统,所以需要配置用户名和邮箱作为一个唯一标识,即用户签名。
  • 作用
    • 区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。
    • Git首次安装必须设置一下用户签名,否则无法提交代码。
  • 相关命令
    • 配置用户名
      • git config --global user.name 用户名
    • 配置邮箱
      • git config --global user.email 用户邮箱
    • –global代表全局属性,所有的Git项目都会使用该用户签名。如果单独给某个项目设置用户签名把 --global去掉即可。
    • 注意:这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。
  • 配置步骤:
  1. 在任何目录下右键,点击Git Bash Here

    Java高级之Git_第24张图片

  2. 执行以下命令

    Java高级之Git_第25张图片

  3. 在当前Windows登录的系统用户路径下,会生成一个.gitconfig的隐含文件,里面可以看到刚刚设置的信息。如果不用命令设置,也可以直接打开文件进行设置。

    Java高级之Git_第26张图片

  4. 也可以通过git config --list命令查看配置信息

    Java高级之Git_第27张图片

第3章 Git本地库实战

3.1 核心概念

  • 工作区(Working Directory)

    就是你电脑本地硬盘目录,一般是项目当前目录

  • 暂存区(stage)

    存放在.git目录下的index文件,我们把暂存区有时也叫作索引(index)。

  • 版本库(Repository)

    工作区里的隐藏目录.git,它就是Git的版本库(也称为本地库)。

Java高级之Git_第28张图片

3.2 常用命令

命令名称 命令作用
git init 初始化本地库
git status 查看本地库状态
git checkout – 文件名 将未添加到暂存区的改变删除
git add 文件名 将文件添加到暂存区
git commit -m “日志信息” 文件名 将文件提交到本地库
git log 查看日志
git log --pretty=oneline 在一行显示日志
git reflog 查看引用日志,即历史记录
git reset --hard HEAD^ 回退一个版本
git reset --hard HEAD~n 回退n个版本
git reset --hard 版本号 版本穿梭
git branch -v 查看分支
git branch 分支名 创建分支
git checkout 分支名 切换分支
git branch -d 分支名 删除分支
git merge 分支名 把指定的分支合并到当前分支上

3.3 初始化本地库

  • 要使用Git对我们的代码进行版本控制,首先需要获得Git仓库,获取Git仓库通常有两种方式:

    1. 在本地初始化一个Git仓库
    2. 从远程仓库克隆
  • 本地初始化Git仓库步骤:

    1. 在电脑磁盘创建一个目录git_test

    2. 进入git_test目录中,右键点击Git Bash Here

      Java高级之Git_第29张图片

    3. 执行git init 命令,发现Git默认创建了一个master分支,并且git_test目录中生成了一个.git的目录

  • master分支

    Java高级之Git_第30张图片

  • .git目录

    Java高级之Git_第31张图片

    1. 查看.git目录结构

    2. 本地库初始化完成

3.4 查看本地库状态

3.4.1 首次查看

执行git status 命令

提示在主分支上没有任何需要提交的文件


3.4.2 在工作区创建新文件

执行vim hello.txt 命令打开一个新文件,添加内容后保存退出

Java高级之Git_第32张图片

3.4.3 再次查看本地库状态

再次执行git status 命令

Java高级之Git_第33张图片

状态说明:

  • Untracked 未跟踪(未被纳入版本控制)
  • Tracked 已跟踪(被纳入版本控制)
  • Unmodified 未修改状态
  • Modified 已修改状态
  • Staged 已暂存状态

颜色说明:

  • 红色表示新建文件或者新修改的文件,都在工作区.
  • 绿色表示文件在暂存区

也可以使用git status -s使输出信息更加简洁

  • ?? : 表示未跟踪状态



3.5 添加到暂存区

3.5.1 将工作区中的文件添加到暂存区

执行git add hello.txt 命令

Java高级之Git_第34张图片

3.5.2 查看本地库状态
  • 文件被添加到暂存区,颜色变成绿色Java高级之Git_第35张图片
  • 再查看.git目录发现多了一个index文件

Java高级之Git_第36张图片

如果想要将文件从暂存区移除可以执行git rm --cached 文件名或git reset 文件名命令


3.6 添加到本地库

3.6.1 将暂存区的文件添加到本地库

执行git commit 命令,输入这次改变的描述信息,保存退出

Java高级之Git_第37张图片

3.6.2 查看本地库状态

文件被提交到本地库,提示在主分支没有任何需要提交的内容

Java高级之Git_第38张图片

3.7 修改文件

  1. 修改hello.txt文件

Java高级之Git_第39张图片

  1. 再次查看本地库状态

Java高级之Git_第40张图片

提示文件被修改,需要再次添加到暂存区并提交到本地库

  1. 重复执行以上步骤,以便在版本库中生成多个版本

    Java高级之Git_第41张图片

  2. 注意:每次修改完都需要执行add和commit的操作(包括删除了文件),如果不是新建的文件可以将add和commit一起执行,执行命令git commit -am “内容改变描述”

    Java高级之Git_第42张图片

3.8 查询版本

  1. 执行git log 命令详细查询,可以显示用户签名和日期

    Java高级之Git_第43张图片

  2. 执行git log --pretty=oneline 命令简要查询,只显示版本号即当前指针指向的版本

    Java高级之Git_第44张图片

  3. 执行git reflog查询历史记录



3.9 版本回退与穿梭

3.9.1 版本回退
  1. 执行git reset --hard HEAD^ 命令回退一个版本

  2. 查询当前所在版本

    Java高级之Git_第45张图片

  3. 查询历史记录

    Java高级之Git_第46张图片

  4. 查看文件内容

    Java高级之Git_第47张图片

  5. 执行git reset --hard HEAD~3 命令回退三个版本

  6. 查询当前所在版本

  7. 查看文件内容

    Java高级之Git_第48张图片

3.9.2 版本穿梭
  1. 查询历史记录

    Java高级之Git_第49张图片

  2. 执行git reset --hard 版本号 命令穿梭到最新版本

  3. 查看文件内容

    Java高级之Git_第50张图片

3.10 分支操作

3.10.1 什么是分支

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本(分支底层其实也是指针的引用)。

Java高级之Git_第51张图片

3.10.2 分支的好处
  1. 同时并行推进多个功能开发,提高开发效率。
  2. 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
3.10.3 创建分支

执行git branch dev命令创建dev分支

3.10.4 查看分支

执行git branch -v命令查看分支

Java高级之Git_第52张图片

带星号的是目前使用的分支

3.10.5 切换分支

执行git checkout dev命令切换到dev分支

3.10.6 合并分支
  1. 修改dev分支中hello.txt文件的内容

    Java高级之Git_第53张图片

  2. 添加到暂存区并提交到本地库

    Java高级之Git_第54张图片

  3. 切换到master分支,查看hello.txt文件中文件的内容

    Java高级之Git_第55张图片

  4. 执行git merge dev命令将dev分支中的内容添加到master分支中

    Java高级之Git_第56张图片

  5. 再次查看hello.txt文件的内容

    Java高级之Git_第57张图片

    发现dev分支中添加的内容已经合并到master分支中

3.10.7 解决冲突
  • 冲突产生的原因

    合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。

  • 产生冲突后文件的效果

dev分支添加

Java高级之Git_第58张图片

master分支添加

Java高级之Git_第59张图片

将dev分支合并到master分支时出现冲突

Java高级之Git_第60张图片

出现冲突时master分支上会有MERGING

查看文件内容

Java高级之Git_第61张图片

  • 解决冲突

    重新编辑hello.txt文件,决定保留那个分支的内容之后将文件添加到暂存区并提交到本地库即可

    Java高级之Git_第62张图片

    我们是将master分支和dev分支的内容都保留了下来

  • 容易产生冲突的操作

    • 多个人同时操作了同一个文件
    • 一个人一直写不提交
    • 修改之前不更新最新代码
    • 擅自修改同事代码
  • 减少冲突的操作

    • 养成良好的操作习惯,先`pull`再修改,修改完立即`commit`和`push`
    • 一定要确保自己正在修改的文件是最新版本的
    • 各自开发各自的模块
    • 如果要修改公共文件,一定要先确认有没有人正在修改
    • 下班前一定要提交代码,上班第一件事拉取最新代码
    • 一定不要擅自修改同事的代码

第4章 远程库实战

4.1 Gitee简介

Gitee(码云) 是开源中国社区2013年推出的基于 Git 的代码托管服务,目前已经成为国内最大的代码托管平台,致力于为国内开发者提供优质稳定的托管服务。

官网:https://gitee.com/

文件大小限制:https://gitee.com/help/articles/4283

Java高级之Git_第63张图片

4.2 常用命令

命令名称 命令作用
git remote add 别名 远程库地址 给远程仓库起别名
git push 别名 分支名 将本地库某个分支中的内容推送到远程库
git clone 远程地址 <本地库名字> 克隆远程库到本地
git pull 远程库地址别名 远程库分支名 拉取远程库分支内容到本地库

4.3 将本地库推送到远程库

4.3.1 创建远程仓库
  1. 点击账号头像左边的加号,选择新建仓库

  2. 填写仓库名称后,点击底部的创建即可

提示:如需创建公开仓库,请在创建仓库后通过「仓库设置」修改为公开

Java高级之Git_第64张图片

  1. 仓库创建成功页面

    Java高级之Git_第65张图片

4.3.2 推送本地库
  1. 点击远程库中的HTTPS按钮,点击复制按钮复制https地址

    Java高级之Git_第66张图片

  2. 在本地库执行git remote add 别名 远程库地址 添加远程仓库的地址

    Java高级之Git_第67张图片

  3. 在本地库的config文件中会自动添加上远程地址与别名的映射

  4. 执行git push origin master命令将本地库的master分支推送到远程库

  5. 会弹出一个认证窗口,填写你的Gitee账号密码后点击确定

    Java高级之Git_第68张图片

  6. 本地库成功推送到远程库

    Java高级之Git_第69张图片

  7. Gitee中已经有本地库的文件

    Java高级之Git_第70张图片

  8. Windows的凭据管理器中多了一条gitee的凭据

    Java高级之Git_第71张图片

  9. 如果想删除Gitee中的仓库,点击仓库中的管理,然后就可以在左侧菜单看到删除仓库的功能

    Java高级之Git_第72张图片

4.4 团队内协作

4.4.1 开发者A创建本地库和远程库
  1. 在本地创建一个gitee-A目录,执行git init初始化本地库

  2. 配置当前项目的用户签名,配置之后当前项目将不再使用全局的用户签名

    Java高级之Git_第73张图片

  3. 执行之后在本地库.git目录中的config文件中会添加上用户签名

    Java高级之Git_第74张图片

  4. 在工作区创建新文件、添加内容、添加到暂存区、提交到本地库

  5. 在GitHub中创建远程库gitee-demo

  6. 在本地库配置gitee-demo远程库别名并将本地库代码推送到远程库,具体操作见4.3

4.4.2 开发者B克隆远程库到本地
  1. 先将Windows中的凭据删掉,如果不删还是开发者A的身份

Java高级之Git_第75张图片

  1. 复制远程库gitee-demo的https地址

    Java高级之Git_第76张图片

  2. 执行git clone 远程库地址 gitee-B命令在本地生成一个gitee-B目录

  3. 弹出认证窗口后,输入开发者B的Gitee账号密码,点击确定

Java高级之Git_第77张图片

  1. 命令行提示403拒绝访问,此时需要仓库的管理员(开发者A),将开发者B添加为仓库成员

Java高级之Git_第78张图片

  1. 开发者A进入仓库管理页面,如下:点击邀请用户后,将邀请链接发给开发者B

Java高级之Git_第79张图片

Java高级之Git_第80张图片

  1. 开发者B访问邀请链接,接受即可

    Java高级之Git_第81张图片

  2. 开发者B再次克隆远程仓库到本地,弹窗输入开发者B的账号密码,确定后可以看到仓库克隆成功

Java高级之Git_第82张图片

  1. 在.git目录的config文件中也自动添加了远程库地址与别名的映射

    Java高级之Git_第83张图片

  2. 进入gitee-B目录,设置gitee-B当前项目的用户签名

    Java高级之Git_第84张图片

  3. 修改内容、添加到暂存区并提交到本地库

4.4.3 开发者B将本地库推送到开发者A的远程库
  1. 因为开发者B已经成为仓库成员,直接推送即可

Java高级之Git_第85张图片

  1. 远程仓库可以看到B的提交记录

Java高级之Git_第86张图片

4.4.4 开发者A更新本地库

开发者A在本地执行git pull 远程库地址别名 master 命令,将远程库gitee-demo最新的代码拉取到本地

Java高级之Git_第87张图片

4.5 跨团队协作

Java高级之Git_第88张图片

如果你在远程仓库中发现一个好的项目,而你又不是该项目团队中的一员,比如上图中的开发者X,你可以通过fork的操作将别人的项目拷贝到你的账户中。


4.5.1 fork别人的项目到自己的账户
  1. 开发者A创建一个仓库gitee-fork

  2. 点击 初始化readme文件,仓库会自动生成两个文件

    Java高级之Git_第89张图片

    Java高级之Git_第90张图片

  3. 将仓库改为公开仓库,进入仓库管理页面,滑到最底部,选择开源

Java高级之Git_第91张图片

  1. 复制仓库链接

    Java高级之Git_第92张图片

  2. 登录开发者X的账号打开链接

    Java高级之Git_第93张图片

  3. 点击Fork按钮

    Java高级之Git_第94张图片

  4. 选择目标空间后,点击确认即可

    Java高级之Git_第95张图片

  5. 在开发者X的账户中也创建了一个同样的仓库,并且仓库名字下方会显示fork的谁的仓库

    Java高级之Git_第96张图片

4.5.2 被fork者更新仓库内容
  1. 登录开发者A的账号,打开gitee-fork仓库显示被fork了1次

    Java高级之Git_第97张图片

  2. 开发者A打开一个文件,然后在线编辑文件内容,修改后提交

    Java高级之Git_第98张图片

4.5.3 fork者更新仓库内容
  1. 登录开发者X的账户,打开gitee-fork仓库,点击更新按钮后,确定即可

    Java高级之Git_第99张图片

  2. 更新成功

    Java高级之Git_第100张图片

4.5.4 fork者发送Pull requests请求

作为fork者的开发者X,也可以修改内容并通过发送Pull requests请求将代码合并到被fork的开发者A仓库中

  1. 开发者X在线修改文件后,提交

    Java高级之Git_第101张图片

  2. 点击Pull Requests,再点击新建 Pull Request

    Java高级之Git_第102张图片

  3. 填写标题后,点击创建Pull Request

    Java高级之Git_第103张图片

  4. 被fork者(开发者A)会收到通知

    Java高级之Git_第104张图片

4.5.4 被fork者接受Pull requests合并代码
  1. 登录开发者A的账户,打开仓库gitee-fork发现有一个Pull requests请求,点开

    Java高级之Git_第105张图片

  2. 点开选项后还可以对Pull Request请求进行评论

    Java高级之Git_第106张图片

  3. 合并前必须先审查通过,测试通过

    Java高级之Git_第107张图片

  4. 审查和测试都通过后,点击合并,再点击合并分支

    Java高级之Git_第108张图片

  5. 点击接收Pull Request

Java高级之Git_第109张图片

  1. 合并成功

    Java高级之Git_第110张图片

  2. 查看文件内容

    Java高级之Git_第111张图片

4.6 SSH免密登录

通过https模式推送代码需要进行账号和密码授权或使用token。

ssh模式比https模式的一个重要好处就是,每次push操作时不用重复填写账号和密码。前提是你必须是这个项目的拥有者或合作者,且配好了ssh key。

配置ssh key的命令:ssh-keygen -t rsa -C 注释

配置ssh key的步骤:

  1. 检查Windows登录用户的工作目录是否有.ssh的目录,有则将其删除。

    Java高级之Git_第112张图片

  2. 在任意目录右键打开Git Bash Here,执行ssh-keygen -t rsa -C ChengLong 命令

    Java高级之Git_第113张图片

  3. 进入Windows登录用户的工作目录,进入.ssh目录,发现两个文件,一个公钥(id_rsa.pub),一个私钥(id_rsa)

    Java高级之Git_第114张图片

  4. 查看公钥id_rsa.pub文件中的内容并复制

  5. 登录账户,点击用户头像,点击设置,在点击SSH公钥

    Java高级之Git_第115张图片

  6. 填写标题,再将公钥文件的内容粘贴到下方,点击确定

    Java高级之Git_第116张图片

  7. 输入当前账号的密码完成验证即可

Java高级之Git_第117张图片

  1. 添加成功

    Java高级之Git_第118张图片

  2. 选择账户中的一个仓库,例如gitee-demo,复制SSH的地址

    Java高级之Git_第119张图片

  3. 命令行执行 git clone 远程仓库地址 目录名称 克隆到本地,第一次建立连接需要输入yes

    Java高级之Git_第120张图片

  4. 克隆成功,查看.git目录中的config文件,发现远程仓库的地址不再是HTTPS协议

    Java高级之Git_第121张图片

4.7 GitHub简介

GitHub是目前全球最大的基于Git的代码托管平台。

GitHub官网:https://github.com/

文件大小限制:https://docs.github.com/cn/repositories/working-with-files/managing-large-files/about-large-files-on-github

注意:由于GitHub的服务器在国外,访问比较慢,甚至访问不了,需要在浏览器中安装一下资料中的GitHub加速插件

Java高级之Git_第122张图片

第5章 Idea集成Git

5.1 定位Git程序

  1. 打开Idea,点击Configure(这种配置对新创建的工程都起作用);如果打开Idea没有下面的窗口也可以创建一个新工程在Settings里设置(这种设置方式只对当前创建的工程起作用)

    Java高级之Git_第123张图片

  2. 点击Settings

    Java高级之Git_第124张图片

  3. 点击Version Control,点击Git,查看有没有自动识别出Window中安装的git.exe程序,如果路径不对手动选择一下

    Java高级之Git_第125张图片

  4. 点击Test按钮测试,弹出Git的版本

    Java高级之Git_第126张图片

5.2 配置忽略文件

5.2.1 那些文件要忽略
  1. Eclipse特定文件

    Java高级之Git_第127张图片

  2. Idea特定文件

    Java高级之Git_第128张图片

  3. Maven工程的target目录

    Java高级之Git_第129张图片

5.2.2 为什么要忽略它们

这些文件或目录与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE工具之间的差异。

5.2.3 如何忽略
  • 方式一:在项目根目录下创建.gitignore文件,使用这种方式每个项目都要单独创建,而且需要将改文件添加到本地库中,文件中的内容见方式二。
  • 方式二:创建一个全局的忽略文件,使用这种方式就不需要为每个项目单独创建忽略文件了,创建步骤:

​ 1.创建忽略规则文件.gitignore,该文件放在那里都可以, 建议与.gitconfig放在同一个目录下(.gitconfig在当前Windows登录用户的工作目录中)

# Compiled class file

*.class

# Log file

*.log

# BlueJ files

*.ctxt

# Mobile Tools for Java (J2ME)

.mtj.tmp/

# Package Files #

*.jar

*.war

*.nar

*.ear

*.zip

*.tar.gz

*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml

hs_err_pid*

.classpath

.project

.settings

target

.idea

*.iml

​ 2.在.gitconfig文件中引用忽略规则文件.gitignore

[user]

name = cl

email = [email protected]

signingkey = “”

[core]

autocrlf = true

excludesfile = C:/Users/aqr_lmy/.gitignore

[credential “https://gitee.com”]

provider = generic

注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)”

5.3 初始化本地库

  1. 创建一个Maven工程idea_git888

  2. 点击工具栏VCS进行初始化(不同的Idea版本位置可能不同)

    Java高级之Git_第130张图片

  3. 选择刚刚创建的工程

    Java高级之Git_第131张图片

  4. 初始化之后pom.xml变成了橙色,被忽略的文件也变了颜色

    Java高级之Git_第132张图片

  5. 项目根目录也生成了.git目录

    Java高级之Git_第133张图片

  6. 工具栏出现了Git操作相关工具

5.4 添加到暂存区

  1. 新建一个Java文件,发现文件变成了橙色,同时弹出一个提示框提示是否添加到暂存区,如果点击Add只会将当前Java文件添加到暂存区,暂时点击Cancel不添加到暂存区

    Java高级之Git_第134张图片

  2. 添加main方法,在控制台打印语句,测试,使用方式跟之前一样,只是文件有颜色而已

    Java高级之Git_第135张图片

  3. 在文件上或项目上右键,找到Git选项,点击Add将文件添加到暂存区

    Java高级之Git_第136张图片

  4. 添加到暂存区之后文件变成了绿色

    Java高级之Git_第137张图片

5.5 提交到本地库

5.5.1 方式一:在文件或项目目录上提交
  1. 在文件或项目上右键,找到Git选项,点击Commit File…或Commit Directory…

    在文件上右键效果:

    Java高级之Git_第138张图片

    在项目上右键效果:

    Java高级之Git_第139张图片

  2. 写提交信息并点击Commit按钮

    Java高级之Git_第140张图片

  3. 提交成功,生成版本之后文件变成了正常的黑色

    Java高级之Git_第141张图片

  4. 每次修改了文件也可以直接进行提交到本地库操作,只要保证提交时文件被勾选了就行

    Java高级之Git_第142张图片

5.5.2 方式二:点击工具栏按钮提交

点击工具类上的绿色√

点击Commit提交更新

Java高级之Git_第143张图片

5.6 版本回退

  1. 点击Idea左下角的Version Control,点击Log

Java高级之Git_第144张图片

  1. 选中要回退的版本,右键点击Reset Current Branch to Here…

  1. 常用的有Soft(软回退):不同会被保存到暂存区;Hard(硬回退):不同不会被保存到暂存区,直接回退到指定的版本

  1. 项目中添加一个新文件测试软回退和硬回退的区别

    Java高级之Git_第145张图片

  2. 软回退到第二次更新的效果:新文件被添加到了暂存区

    Java高级之Git_第146张图片

  3. 硬回退到第二次更新的效果:新文件被删除

    Java高级之Git_第147张图片

5.7 创建分支

5.7.1 方式一:右键创建
  1. 在文件或项目上右键

    Java高级之Git_第148张图片

  2. 点击New Branch

  3. 指定分支名称后点击Create按钮创建

5.7.2 方式二:点击Idea右下角创建
  1. 点击Git:master,然后点击New Branch

    Java高级之Git_第149张图片

  2. 后面的步骤与5.7.1一样

5.8 切换分支

创建分支、切换分支、合并分支都有两种方式,在此只说明第二种方式(点击Idea右下角)。

  1. 在Idea中创建新分支之后会自动切换到新分支,在Idea右下角即可看到当前所在的分支

  2. 点击Git:dev,点击master,点击Checkout切换到master分支

Java高级之Git_第150张图片

  1. 当前使用的分支点击它只能修改分支名称以及推送分支

    Java高级之Git_第151张图片

5.9 合并分支

  1. 在dev分支中修改Java文件

    Java高级之Git_第152张图片

  2. 提交到本地库

    Java高级之Git_第153张图片

  3. 切换到master分支

    Java高级之Git_第154张图片

  4. 合并dev分支到master分支

    Java高级之Git_第155张图片

  5. 合并后效果

    Java高级之Git_第156张图片

5.10 解决冲突

  1. dev分支在GitTest文件的第9行添加内容,并提交到本地库

    Java高级之Git_第157张图片

  2. master分支在GitTest文件的第9行添加不同的内容,并提交到本地库

    Java高级之Git_第158张图片

  3. 将dev分支合并到master,弹出冲突提示框

    • 点击第一个按钮使用当前分支(master)的内容

    • 点击第二个按钮使用被合并的分支(dev)的内容

    • 点击第三个按钮手动决定使用那个分支的内容

      Java高级之Git_第159张图片

  4. 点击第三个按钮Merge…的效果

    • 点击左边双箭头使用master分支的内容

    • 点击右边双箭头使用dev分支的内容

      Java高级之Git_第160张图片

  5. 先点击左边双箭头再点击右边双箭头,保留master和dev两个分支(也可以只保留某一个分支)的内容,点击Apply按钮冲突便得到解决

  6. 查询版本发现版本库中多了一个解决冲突的版本

    Java高级之Git_第161张图片

第6章 Idea集成Gitee

6.1 安装Gitee插件

  1. 点击Idea中的Settings,点击Plugins

    Java高级之Git_第162张图片

  2. 在搜索框搜索Gitee,点击Install

    Java高级之Git_第163张图片

  3. 安装成功点击Restart IDE重启Idea

    Java高级之Git_第164张图片

  4. 再次点开Settings,在Versiong Control中就会发现Gitee选项,就可以通过邮箱和密码登录Gitee账户了

    Java高级之Git_第165张图片

6.2 分享本地工程到Gitee

  1. 点击VCS,找到Share Project on Gitee(不同的Idea版本位置可能不同)

    Java高级之Git_第166张图片

  2. 设置远程仓库的名字(默认就是项目名)、是否是私有仓库、远程仓库地址别名,然后点击Share

    Java高级之Git_第167张图片

  3. 在Gitee账户中自动创建了一个远程仓库

    Java高级之Git_第168张图片

6.3 推送本地库到远程库

  1. 点击Idea右下角Git:master,找到Push…

    Java高级之Git_第169张图片

  2. 默认的origin是https的地址,也可以改用SSH模式推送

    Java高级之Git_第170张图片

  3. 点击origin,点击Define Remote

    Java高级之Git_第171张图片

  4. 复制远程仓库的SSH地址,粘贴过来,换一个别名,点击OK

    Java高级之Git_第172张图片

  5. 选择origin-ssh,点击Push推送

    Java高级之Git_第173张图片

6.4 克隆远程库到本地

6.4.1 方式一:通过URL地址克隆
  1. 点击Get from Version Control

    Java高级之Git_第174张图片

  2. 指定克隆的URL(https或ssh的都可以)和项目名称及存放的路径,点击Clone

    Java高级之Git_第175张图片

  3. 克隆成功弹出提示框,点击Yes打开工程

    Java高级之Git_第176张图片

6.4.2 方式二:通过Gitee账户选择要克隆的工程
  1. 同6.4.1的第一步

  2. 点击Gitee账户,选择要克隆的项目

    Java高级之Git_第177张图片

  3. 后面的步骤与6.4.1一样

6.5 从远程库拉取新内容

  1. 在项目或文件上右键,找到Pull…

    Java高级之Git_第178张图片

  2. 选择远程地址的别名和分支后点击Pull按钮

    Java高级之Git_第179张图片

  3. 或者点击Idea面板右上角的快捷方式拉取

    Java高级之Git_第180张图片

  4. 选择合并到当前分支,点击OK

    Java高级之Git_第181张图片

第7章 GitLab私服

7.1 简介

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。

官网:https://about.gitlab.com/

Java高级之Git_第182张图片

点击官网最下方的install可以查看安装说明

Java高级之Git_第183张图片

选择CentOS7查看安装文档

Java高级之Git_第184张图片

7.2 安装GitLab

  1. 准备一台安装了CentOS7的虚拟机
  • 保证能上网
  • 关闭防火墙
  • 内存最好4G以上
  1. 将资料中的gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm安装包上传到虚拟机的/opt/software目录下

  2. 执行以下命令安装依赖的工具包

    yum install -y curl policycoreutils-python openssh-server perl

  3. 在gitlab的rpm包所在的目录执行以下命令安装gitlab

    rpm -ivh gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm

  4. 执行以下命令初始化GitLab服务(需要等待很久,大概10分钟

    gitlab-ctl reconfigure

  5. 执行以下命令启动GitLab服务

    gitlab-ctl start

  6. 在浏览器地址栏输入虚拟机的ip地址访问GitLab,GitLab默认端口号80

  7. 第一次访问需要修改root密码

Java高级之Git_第185张图片

  1. 修改完密码使用root账户和新的密码进行登录

    Java高级之Git_第186张图片

  2. 登录成功,默认英文界面,可以设置为中文

Java高级之Git_第187张图片

  1. 修改保存后,需要退出再登录才能生效

Java高级之Git_第188张图片

  1. 点击新建项目即可创建仓库

    Java高级之Git_第189张图片

  2. 点击创建空白项目

    Java高级之Git_第190张图片

  3. 创建仓库的界面与Gitee类似,填写项目名称后,点击新建项目即可

    Java高级之Git_第191张图片

  4. 如果要关闭GitLab服务执行以下命令

    gitlab-ctl stop

  5. 只执行上面的命令GitLab依赖的其他服务还在运行,想要彻底关闭所有相关服务需要执行以下命令

    systemctl stop gitlab-runsvdir

  6. 可以将以上服务的开机自启关闭了

    systemctl disable gitlab-runsvdir

  7. 将gitlab-runsvdir服务开机自启禁用掉之后,以后开启虚拟机直接执行gitlab-ctl start启动GitLab将失败,直接执行以下命令启动即可,不需要再执行gitlab-ctl start

    systemctl start gitlab-runsvdir

7.3 在Idea上安装GitLab插件

  1. 在插件商店搜索GitLab

    Java高级之Git_第192张图片

  2. 安装GitLab Projects 2020,重启Idea

    Java高级之Git_第193张图片

  3. 配置GitLab服务器

    Java高级之Git_第194张图片

  4. 配置成功

    Java高级之Git_第195张图片

7.4 推送本地库到GitLab

  1. 在GitLab上创建远程库gitlab-demo

    Java高级之Git_第196张图片

  2. 点击克隆,复制HTTP地址

    Java高级之Git_第197张图片

  3. 修改访问地址

    复制出来的地址是一个例子:http://gitlab.example.com/root/gitlab-demo.git,

    需要改为http://gitlab的地址/root/gitlab-demo.git,

    例如 http://192.168.6.100/root/gitlab-demo.git

  4. 在Idea中推送时定义GitLab远程仓库的地址

    Java高级之Git_第198张图片

  5. 点击Push将Idea中的项目推送到GitLab

    Java高级之Git_第199张图片

  6. 输入GitLab的用户名和密码点击Log In

    Java高级之Git_第200张图片

  7. 推送成功

    Java高级之Git_第201张图片

第8章 Git工作流

8.1 简介

简单来说就是一个项目的成员们在工作中统一使用Git的工作方式。

GitFlow工作流通过为功能开发、发布准备和维护设立了独立的分支,让发布迭代过程更流畅。严格的分支模型也为大型项目提供了一些非常必要的结构。

  • 简单的分支

    Java高级之Git_第202张图片

  • 复杂的分支

    Java高级之Git_第203张图片

8.2 分支的种类

  • 主干分支(master)

    主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境完全一致。

  • 开发分支(develop)

    主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。

  • bug修理分支(hotfix)

    主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。

  • 发布版本分支(release)

    较大的版本上线前,会从开发分支中分出发布版本分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段时间较稳定后可以视情况删除。

  • 功能分支(feature)

    为了不影响较短周期的开发工作,一般会把中长期开发模块从开发分支中独立出来。 开发完成后会合并到开发分支。

8.3 GitFlow演示

你可能感兴趣的:(Git,git,java,服务器)