Java高级之Git

news2024/10/6 18:23:38

Java高级之Git

第1章 Git简介

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

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

历史

作用

工作机制

计算机生成了可选文字: 历史 版本 临时 存储 写代码 本地库 gitcommit 暂存区 gitadd 工作区

版本控制工具

  • 集中式版本控制工具

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

    计算机生成了可选文字: Fork GitHub PullRequest push Git reflog reset clone add commit push add commit clone Git reflog reset push add commit clone reflog reset 工作 发者A 工作 发者B 工作x 开发者x

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

代码托管中心

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

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

第2章 Git安装

2.1 官网

https://git-scm.com/

2.2 安装步骤

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2.3 配置全局用户签名

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

  2. 执行以下命令

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

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

第3章 Git本地库实战

3.1 核心概念

  • 工作区(Working Directory)

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

  • 暂存区(stage)

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

  • 版本库(Repository)

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

计算机生成了可选文字: 工作区 9it版本库H 香存曰 D add 本地库 DDD DDD CheCk0UtL一<file 叫卜~ COmmit Q A E ―日「 Feset一haFd 叫卜- 删除文件 .仁卜 曼 COmmit add【<filenam且> . l

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

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

  • master分支

  • .git目录

    1. 查看.git目录结构

    2. 本地库初始化完成

3.4 查看本地库状态

3.4.1 首次查看

执行git status 命令

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

3.4.2 在工作区创建新文件

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

3.4.3 再次查看本地库状态

再次执行git status 命令

状态说明:

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

颜色说明:

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

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

  • ?? : 表示未跟踪状态

3.5 添加到暂存区

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

执行git add hello.txt 命令

3.5.2 查看本地库状态

  • 文件被添加到暂存区,颜色变成绿色
  • 再查看.git目录发现多了一个index文件

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

3.6 添加到本地库

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

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

3.6.2 查看本地库状态

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

3.7 修改文件

  1. 修改hello.txt文件

  1. 再次查看本地库状态

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

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

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

3.8 查询版本

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

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

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

3.9 版本回退与穿梭

3.9.1 版本回退

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

  2. 查询当前所在版本

  3. 查询历史记录

  4. 查看文件内容

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

  6. 查询当前所在版本

  7. 查看文件内容

3.9.2 版本穿梭

  1. 查询历史记录

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

  3. 查看文件内容

3.10 分支操作

3.10.1 什么是分支

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

计算机生成了可选文字: hot master feature—blue feature—game

3.10.2 分支的好处

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

3.10.3 创建分支

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

3.10.4 查看分支

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

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

3.10.5 切换分支

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

3.10.6 合并分支

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

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

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

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

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

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

3.10.7 解决冲突

  • 冲突产生的原因

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

  • 产生冲突后文件的效果

dev分支添加

master分支添加

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

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

查看文件内容

  • 解决冲突

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

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

  • 容易产生冲突的操作

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

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

第4章 远程库实战

4.1 Gitee简介

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

官网:https://gitee.com/

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

4.2 常用命令

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

4.3 将本地库推送到远程库

4.3.1 创建远程仓库

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

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

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

  1. 仓库创建成功页面

4.3.2 推送本地库

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

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

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

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

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

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

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

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

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

4.4 团队内协作

4.4.1 开发者A创建本地库和远程库

  1. 在本地创建一个gitee-A目录,执行git init初始化本地库

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

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

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

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

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

4.4.2 开发者B克隆远程库到本地

  1. 先将Windows中的凭据删掉,如果不删还是开发者A的身份

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

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

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

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

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

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

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

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

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

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

4.4.3 开发者B将本地库推送到开发者A的远程库

  1. 因为开发者B已经成为仓库成员,直接推送即可

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

4.4.4 开发者A更新本地库

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

4.5 跨团队协作

计算机生成了可选文字: Fork GitHub PullRequest push Git reflog reset clone add commit push add commit clone Git reflog reset push add commit clone reflog reset 工作 发者A 工作 发者B 工作x 开发者x

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

4.5.1 fork别人的项目到自己的账户

  1. 开发者A创建一个仓库gitee-fork

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

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

  1. 复制仓库链接

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

  3. 点击Fork按钮

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

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

4.5.2 被fork者更新仓库内容

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

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

4.5.3 fork者更新仓库内容

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

  2. 更新成功

4.5.4 fork者发送Pull requests请求

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

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

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

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

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

4.5.4 被fork者接受Pull requests合并代码

  1. 登录开发者A的账户,打开仓库gitee-fork发现有一个Pull requests请求,点开

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

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

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

  5. 点击接收Pull Request

  1. 合并成功

  2. 查看文件内容

4.6 SSH免密登录

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

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

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

配置ssh key的步骤:

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

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

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

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

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

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

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

  1. 添加成功

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

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

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

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加速插件

第5章 Idea集成Git

5.1 定位Git程序

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

  2. 点击Settings

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

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

5.2 配置忽略文件

5.2.1 那些文件要忽略

  1. Eclipse特定文件

    p20

  2. Idea特定文件

  3. Maven工程的target目录

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 = 1010056799@qq.com

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版本位置可能不同)

  3. 选择刚刚创建的工程

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

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

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

5.4 添加到暂存区

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

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

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

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

5.5 提交到本地库

5.5.1 方式一:在文件或项目目录上提交

  1. 在文件或项目上右键,找到Git选项,点击Commit File…或Commit Directory…

    在文件上右键效果:

    在项目上右键效果:

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

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

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

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

点击工具类上的绿色√

点击Commit提交更新

5.6 版本回退

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

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

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

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

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

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

5.7 创建分支

5.7.1 方式一:右键创建

  1. 在文件或项目上右键

  2. 点击New Branch

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

5.7.2 方式二:点击Idea右下角创建

  1. 点击Git:master,然后点击New Branch

  2. 后面的步骤与5.7.1一样

5.8 切换分支

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

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

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

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

5.9 合并分支

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

  2. 提交到本地库

  3. 切换到master分支

  4. 合并dev分支到master分支

  5. 合并后效果

5.10 解决冲突

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

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

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

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

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

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

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

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

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

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

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

第6章 Idea集成Gitee

6.1 安装Gitee插件

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

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

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

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

6.2 分享本地工程到Gitee

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

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

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

6.3 推送本地库到远程库

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

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

  3. 点击origin,点击Define Remote

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

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

6.4 克隆远程库到本地

6.4.1 方式一:通过URL地址克隆

  1. 点击Get from Version Control

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

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

6.4.2 方式二:通过Gitee账户选择要克隆的工程

  1. 同6.4.1的第一步

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

  3. 后面的步骤与6.4.1一样

6.5 从远程库拉取新内容

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

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

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

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

第7章 GitLab私服

7.1 简介

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

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

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

选择CentOS7查看安装文档

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密码

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

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

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

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

  2. 点击创建空白项目

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

  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

  2. 安装GitLab Projects 2020,重启Idea

  3. 配置GitLab服务器

  4. 配置成功

7.4 推送本地库到GitLab

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

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

  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远程仓库的地址

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

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

  7. 推送成功

第8章 Git工作流

8.1 简介

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

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

  • 简单的分支

    计算机生成了可选文字: 罕份*.- MSSt6r 令.+.----争.

  • 复杂的分支

    计算机生成了可选文字: Git工作流 .'r 训。O mast.r. V, 二 月口口价口口口口口口口. ~....卜 Bug! 呢.0 二 甸匀.0 PaSS! 二公.汗 尹、 hottiX 。. 、飞. r目.台56,友0 d.v.lop 佳atur._goldstyl. / feature_game .....卜.....卜……卜.

8.2 分支的种类

  • 主干分支(master)

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

  • 开发分支(develop)

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

  • bug修理分支(hotfix)

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

  • 发布版本分支(release)

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

  • 功能分支(feature)

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

8.3 GitFlow演示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/28195.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

10.0 SpringMVC源码分析之MVC 模型由来

0.MVC 模型由来 0.1 Model1 模型 Model1 模型是很早以前项目开发的一种常见模型&#xff0c;项目主要由 jsp 和 JavaBean 两部分组成。 它的优点是:结构简单&#xff0c;开发小型项目时效率高。 它的缺点也同样明显: 第一:JSP的职责兼顾于展示数据和处理数据(也就是干了控制…

m基于matlab的BTS天线设计,带GUI界面

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 内容&#xff1a; N个天线按等距分布在z轴上&#xff0c;第N个和第N-1的之间的天线的距离是一定的为d。 在上述有红色的一块&#xff0c;是计算Taylor 公式的&#xff0c;有一个疑问就…

【计算机毕业设计】23.网上商城购物系统+vue

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;网上商城购物系统当然也不能排除在外。网上商城购物系统是…

Java不得不知道的八股文之哈希表

哈希表简介 在哈希表中进行添加&#xff0c;删除&#xff0c;查找等操作&#xff0c;性能十分之高&#xff0c;不考虑哈希冲突的情况下&#xff08;后面会探讨下哈希冲突的情况&#xff09;&#xff0c;仅需一次定位即可完成&#xff0c;时间复杂度为O(1)&#xff0c;接下来我…

如何回复SCI审稿人评审意见(response letter)

如何高效地回复审稿意见&#xff1f;&#xff08;上&#xff09; 如何高效地回复审稿意见&#xff1f;&#xff08;中&#xff09; 如何高效地回复审稿意见&#xff1f;&#xff08;下&#xff09; 如何高效回复审稿人意见&#xff08;附实例&#xff09; 如何高效的回复审稿人…

机器学习笔记之核方法(一)核方法介绍

机器学习笔记之核方法——核方法介绍引言回顾&#xff1a;支持向量机的对偶问题核方法思想介绍线性可分与线性不可分非线性带来高维转换对偶表示带来内积核函数核函数满足的条件(2022/11/23)引言 本节将介绍核方法以及核函数。 回顾&#xff1a;支持向量机的对偶问题 在支持…

Ubuntu sudo apt update 过程中遇到的报错解决

文章目录参考资料1. 前言2. 换源方式1. 方式1&#xff1a; 更换/etc/apt/sources.list文件里的源2. 方式2&#xff1a;在设置中software&updates(软件和更新)里进行换源3. 问题解决--移除失效的ppa参考资料 E: 仓库 “https://mirrors.aliyun.com/docker-ce/linux/ubuntu …

目标检测算法——YOLOv5/YOLOv7改进结合涨点Trick之ASFF(自适应空间特征融合)

>>>深度学习Tricks,第一时间送达<<< 🚀🚀🚀NEW!!!魔改YOLOv5/YOLOv7目标检测算法来啦 ~ 💡💡魔法搭配计算机视觉领域各类创新新颖且行之有效的网络结构,平均精度均值mAP涨点明显,实验效果也俱佳。有需要的小伙伴可以在CSDN后台留言+点赞收藏…

闲人闲谈PS之三十三——项目承诺成本管理

惯例闲话&#xff1a;学习很苦&#xff0c;坚持很酷——最近看到这句话&#xff0c;苦和酷放在一起&#xff0c;总有一种感觉&#xff0c;吃苦是为了耍酷。这恰恰是这句话的问题之处&#xff0c;苦是自己的&#xff0c;酷是外部环境对自己的评价。所以&#xff0c;苦这件事情&a…

k8s1.25版本集群部署(亲测有效)

1.实验环境准备 准备三台centos7虚拟机&#xff0c;用来部署k8s集群&#xff1a; master&#xff08;hadoop1&#xff0c;192.168.229.111&#xff09;配置&#xff1a; 操作系统&#xff1a;centos7.3以及更高版本都可以配置&#xff1a;4核cpu&#xff0c;4G内存&#xff…

【JavaScript流程控制-分支】

JavaScript流程控制-分支1 本节目标2 流程控制3 顺序流程控制4 分支流程控制if语句4.1 分支结构4.2 if语句4.2.1 语法结构4.2.2 执行流程4.3 if else语句(双分支语句)4.3.1 语法结构4.3.2 执行流程4.4 if else if语句(多分支语句)4.4.1 语法结构4.4.2 执行流程5 三元表达式5.1 …

蓝桥杯嵌入式第一篇 点亮LED灯开启成功之路

文章目录前言一、准备工作1.拿到开发板第一步看原理图2.下载STM32cubeMX二、开始点灯1.查看LED原理图2.cubeMX配置3.代码实现总结前言 从这篇文章开始将为大家带来最详细最全面的蓝桥杯嵌入式教学&#xff0c;本教程将使用STM32cubeMX教大家快速入门STM32。花最少的时间拿下国…

电镀废水末端除镍工艺,除镍树脂如何使用?

电镀废水的处理方案分析 电镀废水中含有铜、镍等金属物质&#xff0c;具有较高的回收价值。因此&#xff0c;为了减少环境污染&#xff0c;提高电镀企业的经济效率&#xff0c;一般会对电镀废水进行 回收性的处理&#xff0c;来回收金属铜、镍等。而从目前情况看&#xff0c;…

ipv6地址概述——了解ipv6与ipv4不同

目录 一 ipv4与ipv6 1.ipv4的概述 2.ipv4存在的问题 3.ipv6的概述 4.ipv4与ipv6的优点和特点 5.ipv6与ipv4的变化 ipv4包头 ipv6包头 6.ipv6的基本术语 个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每…

三菱机床联网

一、设备信息确认 1、确认型号 数控面板拍照确认&#xff1a; 此系统为&#xff1a;M70控制器 注&#xff1a;目前M70和M80&#xff0c;基本上都有网络通讯和采集功能。 2、确认通讯接口 网口常见位置&#xff0c;LAN标号&#xff0c;可通过这个确认&#xff1a; 1、数控…

云计算的一些常见安全风险

许多企业正在将业务转移到云端以提高效率并简化工作负载。虽然云计算可以为组织提供竞争优势&#xff0c;但重要的是不要在不了解所涉及的风险的情况下仓促采用云。无论您的组织是否已经开始迁移到云&#xff0c;有几个关键的安全注意事项需要牢记在心。下文是一些云计算的常见…

【SQLite】一、SQLite简介——MySQL的简洁版

作者主页&#xff1a;Designer 小郑 作者简介&#xff1a;浙江某公司软件工程师&#xff0c;负责开发管理公司OA、CRM业务系统&#xff0c;全栈领域优质创作者&#xff0c;CSDN学院、蓝桥云课认证讲师&#xff0c;开发过20余个前后端分离实战项目&#xff0c;主要发展方向为Vue…

PTA题目 寻找250

对方不想和你说话&#xff0c;并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。 输入格式&#xff1a; 输入在一行中给出不知道多少个绝对值不超过1000的整数&#xff0c;其中保证至少存在一个“250”。 输出格式&#xff1a; 在一行中输出第…

openEuler 通过Rook在k8s集群部署Ceph

openEuler 版本号: 2209 前置条件 k8s集群版本 kubectl version Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.12", GitCommit:"b058e1760c79f46a834ba59bd7a3486ecf28237d", GitTreeState:"clean&…

图片加水印怎么弄?小白都会的加水印方法

现在给图片添加水印很重要&#xff0c;因为我们辛苦拍摄的照片或视频很容易被其他人转发&#xff0c;而他们无需注明出处和原作者&#xff0c;因此很容易误导浏览者&#xff0c;让他们以为这些照片是“转载者”拍摄的。这样其实对原作者很不公平&#xff0c;如果不添加水印&…