git学习总结

1-版本控制系统概述

1.1 开发中的实际场景

场景一:代码备份

Curry负责的模块就要完成了,就在即将发布之前的一瞬间,电脑突然蓝屏,硬盘光荣牺牲!几个月来的努力付之东流。

场景二:代码还原【版本控制】

这个项目中需要一个很复杂的功能,小明摸索了一个星期!终于有了眉目,可是这被改得面目全非的代码,已经回不到从前了。

场景三:协同开发
码农A和码农B先后从文件服务器上下载了同一个文件:UserDao.java。码农A在UserDao.java文件中的第30行声明了一个方法,叫add()方法,先保存到了文件服务器上;码农B在UserDao.java文件中的第30行声明了一个方法叫sum(),也随后保存到了文件服务器上,于是add()方法就只存在于码农A的记忆中了。

场景四:追溯问题代码

小明是项目经理,每次因为项目进度挨骂之后,他都不知道该扣哪个程序员的工资!就拿这次来说吧,有个Bug调试了30多个小时才知道是因为相关属性没有在应用初始化时赋值!可是所有人都不承认是自己干的!!!

开发过程中问题种种,于是版本控制系统从而引出!!!

1.2 版本控制系统

版本控制系统能追踪项目,从开始到结束的整个过程。对编程人员而言,版本控制技术是团队协作开发的桥梁,助力于多人协作同步进行大型项目开发。软件版本控制系统的核心任务:查阅项目历史操作记录、实现协同开发。

常见的两种版本控制类型:

1、集中式版本控制工具【SVN

集中式版本控制工具,版本仓库是集中存放在中央服务器的,团队里每个人工作时,从中央服务器下载代码。每个人个人修改后,提交到中央版本仓库。提交(commit)代码需要联网。

2、分布式版本控制工具【Git

分布式版本控制系统可以没有中央服务器,每个人的电脑上都是一个完整的版本仓库,这样工作的时候,不需要联网。因为版本仓库就在你自己的电脑上。多人协作只需要各自修改,开发完成即可,推送给对方【联网】,推送的时候是将整个版本仓库推过去。

1.3 Git 简介

1.3.1基本介绍

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目的版本管理,GitLinus Torvalds。他是为了帮助管理 Linux内核开发而开发的一个的版本控制软件,最后开源了。

  • 速度、简单的设计,对非线性开发模式的强力支持(允许成千上万个并行开发的分支)。
  • 完全分布式,有能力高效管理类似Linux内核一样的超大规模项目(速度和数据量)。

1.3.2 Git工作流程图

操作:

  • Clone:克隆,从远程仓库中克隆代码到本地仓库,第一次操作
  • Push:推送,代码完成后,需要和团队成员共享代码时,将代码推送到远程仓库。
  • Pull:拉取,从远程库拉代码到本地库,自动进行合并(merge),最后放到工作区。

操作:

  • checkout:将本地仓库的内容检出到工作区。
  • add:在提交前先将代码提交到暂存区。
  • commit:提交到本地仓库。

1.3.3 基本概念

1、本地仓库: 在本地主机上的一个代码库,可以独立存在,也可以与远程仓库进行关联。

  • 工作区:对任何文件的修订(增删改),都先放在工作区,工作区不与任何仓库分支进行关联。
  • 暂存区:把修订的文件,从工作区经过add(添加)后与某一个仓库分支进行关联,只要进入缓存区的文件才能commit【提交】到本地仓库。

2、远程仓库 : 在局域网或互联网上的一个主机,存放代码库的主机或平台,比如GitHub、Gitee.com

3、分支:代码存放在仓库,默认是主分支(master),可以在主分支基础上创建很多子分支,比如develop【开发】bugfix【bug修复】等。

2-Git的下载与安装

2.1 下载与安装

1、git官网地址:https://git-scm.com/downloads

2.2 软件安装

1、Windows平台安装

双击安装.exe文件,一路Next使用默认选项即可,双击下载的安装文件来安装Git。安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看
到如下两个菜单则说明Git安装成功。

2、查看其版本

3、Linux平台安装

下载地址:https://github.com/git/git/releases/tag/v2.34.1

4、 安装依赖环境

## 1、安装依赖环境
[root@k8s-jenkinsagent01 opt]# yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * elrepo: mirror-hk.koddos.net
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
base                                                                                                | 3.6 kB  00:00:00     
docker-ce-stable                                                                                    | 3.5 kB  00:00:00     
elrepo                                                                                              | 3.0 kB  00:00:00     

作为依赖被安装:
  gdbm-devel.x86_64 0:1.10-8.el7                              gettext-common-devel.noarch 0:0.19.8.1-3.el7                
  git.x86_64 0:1.8.3.1-23.el7_8                               keyutils-libs-devel.x86_64 0:1.5.8-3.el7                      
  pyparsing.noarch 0:1.5.6-9.el7                              rsync.x86_64 0:3.1.2-10.el7                                 
  systemtap-sdt-devel.x86_64 0:4.0-13.el7                    

完毕!
[root@k8s-jenkinsagent01 opt]# git --version
git version 1.8.3.1
# 2、删除yum方式安装的git
[root@k8s-jenkinsagent01 opt]# yum -y remove git
已加载插件:fastestmirror
正在解决依赖关系
--> 正在检查事务
---> 软件包 git.x86_64.0.1.8.3.1-23.el7_8 将被 删除
--> 正在处理依赖关系 git = 1.8.3.1-23.el7_8,它被软件包 perl-Git-1.8.3.1-23.el7_8.noarch 需要
--> 正在处理依赖关系 git,它被软件包 gettext-devel-0.19.8.1-3.el7.x86_64 需要

删除:
  git.x86_64 0:1.8.3.1-23.el7_8                                                                                            

作为依赖被删除:
  gettext-devel.x86_64 0:0.19.8.1-3.el7                         perl-Git.noarch 0:1.8.3.1-23.el7_8                        

完毕!
[root@k8s-jenkinsagent01 opt]# git --version
-bash: /usr/bin/git: 没有那个文件或目录
## 3、解压操作
[root@k8s-jenkinsagent01 opt]# tar -zxvf git-2.28.0.tar.gz
[root@k8s-jenkinsagent01 opt]# ls
apache-maven-3.6.3-bin.tar.gz  containerd  git-2.28.0.tar.gz  jdk-8u261-linux-x64.tar.gz
cni                            git-2.28.0  jdk1.8.0_261       maven
[root@k8s-jenkinsagent01 opt]# cd git-2.28.0/
## 4、配置git安装路径
[root@k8s-jenkinsagent01 git-2.28.0]# ./configure --prefix=/opt/git/
checking for library containing getdelim... none required
checking for BSD sysctl... no
checking for POSIX Threads with ''... no
checking for POSIX Threads with '-mt'... no
checking for POSIX Threads with '-pthread'... yes
configure: creating ./config.status
config.status: creating config.mak.autogen
config.status: executing config.mak.autogen commands
## 5、编译并且安装
[root@k8s-jenkinsagent01 git-2.28.0]# make && make install
[root@k8s-jenkinsagent01 opt]# ls
apache-maven-3.6.3-bin.tar.gz  containerd  git-2.28.0         jdk1.8.0_261                maven
cni                            git         git-2.28.0.tar.gz  jdk-8u261-linux-x64.tar.gz
# 6、配置操作
[root@k8s-jenkinsagent01 opt]# vim /etc/profile

    umask 022
fi

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . "$i"
        else
            . "$i" >/dev/null
        fi
    fi
done

unset i
unset -f pathmunge
export PATH
export JAVA_HOME=/opt/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export MAVEN_HOME=/opt/maven
export PATH=$MAVEN_HOME/bin:$PATH
export PATH=$PATH:/opt/git/bin
[root@k8s-jenkinsagent01 opt]# source /etc/profile
[root@k8s-jenkinsagent01 opt]# git --version
git version 2.28.0
[root@k8s-jenkinsagent01 opt]# 

3-Git基本配置

3.1 基本配置

1、安装完成Git 后,正式使用git前,是需要进行一些全局设置【用户签名】,如用户名、邮箱

设置的主要命令是:git config

# 设置全局用户名
git config --global user.name "your name"  
# 设置邮箱
git config --global user.email "your email" 

其中,--global 指定为全局配置,不使用该参数,则为当前所在仓库配置。

通过上面的命令设置的信息会保存在.gitconfig文件中

2、查看配置信息

-- 查看命令
git config --list 

3.2 构建本地仓库

3.2.1 初始化本地Git仓库

1、具体步骤

  • 在电脑的工作区创建一个空目录(例如GitDemo)作为本地Git仓库。
  • 进入这个目录中,点击右键打开Git bash窗口,执行git init命令。

如果在当前目录中看到.git文件夹(此文件夹为隐藏文件夹)则说明Git仓库创建成功【初始化成功!!!】

3.3 本地仓库操作

3.3.1查看当前文件状态

1、具体命令

#命令形式
git status [-s] 

3.3.2将文件添加暂存区

要将一个文件纳入到版本库管理,首先要将其添加到暂存区,然后才能提交到仓库中。将文件添加到暂存区,使用的是:git add命令

# 添加单个文件到暂存区
git add hello.java
# 将当前目录下所有修改添加到暂存区,除按照规则忽略的之外
git add .   

3.3.3 提交本地库

1、将暂存区中的文件,提交到仓库中。

# 如果暂存区有文件,则将其中的文件提交到仓库
git commit 
# 带评论提交,用于说明提交内容、变更、作用等
git commit -m 'your comments'  

2、修改文件

3.3.4 查看提交历史记录

有的时候,是会需要查看自己做过哪些提交,来回顾自己完成的部分。或者需要寻找某个具体的提交来查看当时的代码,这里需要用到:

# 查看当前版本信息
git reflog 
# 显示所有提交的历史记录
git log   

3.3.5 版本回退

有了git log来查看提交的历史记录,就可以通过 git reset --hard 来回退到需要的特定版本,然后使用当时的代码进行各种操作。

# 退到 commit_id 指定的提交版本
git reset --hard 'commit_id'

3.3.6 删除文件

在文件未添加到暂存区之前,对想删除文件可以直接物理删除。如果文件已经被提交,则需要使用命令:git rm

# 删除已经被提交过的文件git rm xxx.xx

4-Git分支管理

1、什么分支

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

2、分支的好处

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

3、分支管理介绍

几乎所有的版本控制系统都以某种形式支持分支,使用分支意味着可以把工作从开发主线上分离开来进行Bug修改、开发新的功能,以免影响开发主线。
在开发中,一般以下分支使用流程:

4.1 查看分支

查看分支使用命令:git branch

# 查看本地分支信息git branch    # 查看相对详细的本地分支信息git branch -v  # 查看包括远程仓库在内的分支信息git branch -av  

git branch 的输出内容中,有一个分支,前面带有 * 号,这标识当前所在的分支

4.2 创建分支

当要修复一个Bug,或者开发一个新特性,甚至是在初学的时候怕打乱原来的代码,都可以新建一个分支来避免对原来代码的影响。

# 新建一个名称为hot-fox的分支git branch hot-fix

4.3 切换分支

1、基本实现

当创建完分支以后,需要切换到新建的分支,否则,所有的修改,还是在原来的分支上。事实上,所有的改动只能影响到当前所在的分支

# 新建完hot-fox分支以后,通过该命令切换到hot-fox分支git checkout hot-fix

2、创建并切换分支

这个命令合并了前两个独立的命令,平常使用中一般这样使用。

# 新建dev分支,并切换到该分支上git checkout -b hot-fix

4.4 修改分支

1、在分支【hot-fix】上修改文件,然后提交到本地库。

4.5 合并分支

4.5.1 正常合并

当修复完成一个Bug,或者开发完成一个新特性,我们就会把相关的Bug或者 特性的上修改合并,回原来的主分支上,这时候就需要使用:git merge来做分支的合并。首先需要切换回最终要合并到的分支,如master 分支

# 切换回 master 分支git checkout master 

# 将hot-fix分支中的修改合并回master 分支git merge hot-fix

4.5.2 分支合并冲突

1、冲突产生的表现

后面状态为 MERGING

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

手动的打开文件,然后删除非必要的文件

然后添加到暂存区,然后在提交到本地库。【此时使用 git commit 命令时 不能带文件名

4.6删除分支

当之前创建的分支,完成了它的使命,如Bug修复完,分支合并以后,这个分支就不在需要了,就可以删除它。

5-Git远程仓库

5.1 注册GitHub

1、基本介绍

现在我们已经在本地创建了一个Git仓库,又想让其他人来协作开发,此时就可以把本地仓库同步到远程仓库,同时还增加了本地仓库的一个备份。那么如何搭建Git远程仓库呢?可以借助互联网上提供的一些代码托管服务平台来实现,其中比较常用的有GitHub、码云等。
GitHub【地址:https://github.com/】是一个面向开源及私有软件项目的托管平台,因为只支持Git 作为唯一的版本仓库格式进行托管,故名GitHub

码云【地址:https://gitee.com/】是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快。

2、登录网址,点击sign up注册账号

3、填写信息,注意邮箱要真实有效

4、输入验证码,注册成功

5、github登录成功!!!

5.3 创建删除远程仓库

5.3.1 创建远程仓库

1、点击New repository操作

2、点击create repository按钮仓库就创建成功了。

5.3.2 删除远程仓库

1、选择要删除的项目,点击settings

2、打开页面,直接拉到最后面,可以看到按钮Delete this repository

3、最后直接输入项目名称,点击删除

4、删除成功

5.4 GitHub操作

1、创建3个GitHub账号,然后将三个账号为一组,进行团队协作。

账号 姓名 验证邮箱
xiaowangcoding 小王 xiaowangcoding@163.com
xiaomingcoding 小明 xiaomingcoding@163.com
guardwhy 小禾 xiaohecoding@163.com

2、Git相关命令

命令名称 作用
git remote -v 查看当前所有远程地址别名
git remote add 别名 远程地址 起别名
git push 别名 分支 推送本地分支上的内容到远程仓库
git clone 远程地址 将远程仓库的内容克隆到本地
git pull远程库地址别名 远程分支名 将远程仓库对于分支最新内容拉下来后与
当前本地分支直接合并

5.4.1 创建远程仓库别名

1、基本语法

git remote -v  #查看当前所有远程地址别名git remote add  别名 

创建别名要拿到远程仓库后生成的连接。

2、案例实操

5.4.2 推送本地库到远程仓库

1、基本语法

git push  别名 

2、案例实操

3、查看远端的仓库,推送成功

5.4.3 克隆远程仓库到本地

1、基本语法

git clone 远程地址

2、案例实操

3、克隆成功

5.4.4 免密登录

Github支持两种同步方httpsssh。如果使用https很简单基本不需要配置就可以使用,但是每次提交代码和下载代码时都需要输入用户名和密码。而且如果是公司配置的私有git服务器一般不提供https方式访问,所以我们要来着重演示ssh方式。

打开远程仓库,可以看到远程仓库中还有一个SSH的地址,因此也可以使用SSH进行访问。

1、什么是ssh协议

SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。使用SSH同步方式需要先生成密钥并在GitHub配置公钥。

2、ssh密钥生成

先找到.ssh的文件夹然后删除,打开git bash重新生成新的公钥和私钥。

执行以下命令

ssh-keygen -t rsa -C hxy1625309592@foxmail.com

进入.ssh目录查看文件列表,拿到公钥【Linux进入/.ssh查看公钥

复制 id_rsa.pub 文件内容,登录 GitHub,点击用户头像→SettingsSSH and GPG keys

将公钥复制到此处

添加完成!!!

接下来再往远程仓库clone东西的时候使用SSH 连接就不需要登录了。

5.5 团队内协作

1、团队协作流程

2、选择邀请合作者

3、填入需要合作的人码农小王

4、复制地址并通过微信钉钉等方式发送给该用户

https://github.com/guardwhy/gitdemo/invitations

5、在xiaowangcoding这个账号中的地址栏复制收到邀请的链接,点击接受邀请。

6、在 成功之后可以在xiaowangcoding这个账号上看到 gitdemo的远程仓库。

7、码农小王可以修改内容并push到远程仓库。

推送成功!!!小禾将修改后的功能拉取到本地库,更新本地库!!!

5.6 跨团队协作

1、跨团队协作流程

2、 将远程仓库的地址复制发给邀请跨团队协作的人,比如【码农小明】,在小明的GitHub账号里的地址栏复制项目的连接

或者直接在小明的GitHub账号里的地址栏搜索该项目

然后点击Fork将项目叉到小明自己的远程仓库。

3、将代码Clone到自己的本地库进行修改,然后在推送到小明自己的远程仓库

查看远端库,修改成功!!!

4、接下来点击上方的pull requests,并创建一个新的请求。

点击这个按钮

5、回到小禾GitHub账号可以看到有一个Pull request 请求。

6、如果问题不大,审核通过以后,可以点击Merge pull reque 合并代码

再次确认代码是否合并!!!

7、打开小禾GitHub,发现代码修改成功!!!

5.7 注销GitHub账号

如果你不想使用自己的github账号了,github官网允许你删除账号,具体操作步骤为:

1、登录github网站,网站右上角的头像,在下拉菜单中选择Settings【设置】

2、选择左侧菜单中的Account【账号】

3、点击网站底部的Delete your account按钮

4、在弹出的窗口中,在第一个输入框中输入github的用户名或者邮箱,然后在第二个输入框中输入delete my account这句话,最后点击Cancle plan and delete this account按钮

删除之后,会跳转到github首页,再登录一下,就登录不上去了

6-IDEA使用Git

6.1 在Idea中配置Git

6.1.1 安装Git

安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到Git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。选择File→Settings打开设置窗口,找到Version Control下的Git选项:

6.1.2 配置 Git忽略文件

1、创建一个gittest项目,编写相关业务代码,忽略IDEA的特定文件。

一般在工作区中,并不是所有文件都需要纳入版本控制的这种不需要进行版本控制的通常都是些自动生成的文件。比如:idea工程文件(springmvc.iml)、编译后文件target、系统上传的图片img

2、创建忽略规则文件

在这种情况下,可以在工作目录中创建一个名为xxxx.ignore的文件【建议是 git.ignore】,列出要忽略的文件。这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig 文件引用,建议也放在用户家目录下。

# 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,  seehttp://www.java.com/en/download/help/error_hotspot.xmlhs_err_pid*.classpath.project.settingstarget.idea*.iml

3、在.gitconfig文件中引用忽略配置文件【此文件在Windows的家目录中】

[user]	name = guardwhy	email = hxy1625309592@foxmail.com	[core]      excludesfile = C:/Users/linux/git.ignore

6.2 IDEA 基本操作

6.2.1 初始化本地库

1、选择要创建Git本地仓库的工程,初始化本地库。

查看源码颜色变红色,初始化成功!!!

6.2.2 添加到暂存区

右键点击项目选择Git -> Add将项目添加到暂存区。

查看源码颜色变绿色,添加暂存区成功!!!

6.2.3 提交到本地库

右键点击项目选择Git -> Commit Directoy将项目添加到本地库。

查看源码颜色变黑色,提交本地库成功!!!

6.2.4 IDEA 查看版本信息

1、在 IDEA 的左下角,点击Git,然后点击 Log 查看版本。【如果之前代码提交到本地库,再次更新代码时,无需提交到暂存区,直接提交到本地库

右键选择要切换的版本,然后在菜单里点击Checkout Revision

6.3 IDEA 分支管理

6.3.1 创建分支

1、右键项目名称,选择Git,在 Repository 里面,点击 Branches 按钮。

2、然后点击New Branch,创建新的分支

3、也可以直接点击下面的master按钮创建新的分支

4、创建分支【hot-fix】并且直接切换到当前分支

5、如果需要切换为主分支,直接点击下面的hot-fix按钮,然后选择checkout之后,直接切回master分支

6.3.2 合并分支

6.3.2.1 正常合并

先修改hot-fix分支上面的代码,然后提交到本地库。

查看master分支上代码.

站在master分支上合并hot-fix分支内容,点击下面master按钮,然后选择hot-fix分支,最后选择Merge into Current

如果代码没有冲突,分支直接合并成功,分支合并成功以后,代码自动提交,无需手动提交本地库。最后查看master分支上代码,合并成功!!!

6.3.2.2 冲突合并

1、如图所示,如果master分支和hot-fix分支都修改了代码,在合并分支的时候就会发生冲突

2、现在站在master分支上合并hot-fix分支,就会发生代码冲突。

3、点击Conflicts框里的 Merge按钮,进行手动合并代码。

4、手动合并完代码以后,点击右下角的 Apply 按钮。

5、代码冲突解决,自动提交本地库。

6.4 IDEA集成GitHub

6.4.1 设置GitHub 账号

1、先去GitHub 账户上获得token,然后在登录。

2、下面的学习环境权限作用域拉满

3、然后点击生成 token。

4、复制红框中的字符串到 idea 中。

5、将token复制到IDEA,然后点击登录。

6、登录成功!!

6.4.2 分享工程到 GitHub

1、点击界面上端,选择Git,在 GitHub 里面,点击 Share Project on GitHub 按钮。

2、修改项目的别名

3、点击Share,来到GitHub中发现已经帮我们创建好了git-test的远程仓库。

6.4.3 推送本地库代码到远程库

1、修改完代码,提交到本地库。

2、将本地库代码推送到远程库

方案一

方案二

使用SSH免密登入,直接推送到远程库,

查看远程仓库,推送成功!!!!

3、注意事件

push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push 的操作是会被拒绝的,要想 push 成功,一定要保证本地库的版本要比远程库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先pull拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!

6.4.4 拉取远程库到本地库

1、修改远程库的代码

2、右键点击项目,可以将远程仓库的内容pull到本地仓库。

3、选择免密SSH

4、拉取成功!!注意:pull是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。

6.4.5 克隆远程库到本地

1、复制远程端项目的链接

2、打开IDEA,使用将项目下载下来

3、Clone下来以后,直接打开即可。

4、运行项目,Clone成功!!!!

7-GitLab

7.1 GitLab的简介

GitLab 是由 GitLabInc.开发,使用 MIT 许可证的基于网络的 Git 仓库管理工具,且具有wiki 和 issue 跟踪功能。使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。GitLab 由乌克兰程序员 DmitriyZaporozhets 和 ValerySizov 开发,它使用 Ruby 语言写成。后来,一些部分用 Go 语言重写。截止 2018 年 5 月,该公司约有 290 名团队成员,以及 2000 多名开源贡献者。GitLab 被 IBM,Sony,JülichResearchCenter,NASA,Alibaba,Invincea,O’ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX 等组织使用。

7.2 GitLab 官网地址

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

7.3 官方地址文档

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

官网教程https://docs.gitlab.com/omnibus/docker/

7.4 容器化安装

1、服务器准备

准备一个系统为 CentOS7 以上版本的服务器,要求内存 4G,磁盘 50G。关闭防火墙,并且配置好主机名和 IP,保证服务器可以上网。
使用云服务器【该服务器需要安装docker】:主机名:k8s-gitlab01 IP 地址:192.168.50.138

基础镜像准备

## 稳定版docker pull gitlab/gitlab-ce:12.7.6-ce.0## 最新版:不是很稳定的版本docker pull gitlab/gitlab-ce:latest

2、运行容器

[root@k8s-gitlab01 ~]# lsanaconda-ks.cfg[root@k8s-gitlab01 ~]# cd /home/[root@k8s-gitlab01 home]# lsdata[root@k8s-gitlab01 home]# cd data/[root@k8s-gitlab01 data]# ls[root@k8s-gitlab01 data]# docker run -itd --name gitlab -p 443:443 -p 80:80 -p 222:22 --restart always -m 4GB \> -v /home/data/gitlab/config:/etc/gitlab \> -v /home/data/gitlab/logs:/var/log/gitlab \> -v/home/data/gitlab/data:/var/opt/gitlab \> -e TZ=Asia/Shanghai gitlab/gitlab-ce:12.7.6-ce.0f5c0aa3d94d8af053d3bf510b987ea19d0943bc4b03f8c2a6212c82afb259f37[root@k8s-gitlab01 data]# 

3、通过IDEA连接服务器k8s-gitlab01修改gitlab.rd文件

# 配置项目访问地址:external_url 'http://192.168.50.138'配置ssh协议所使用的访问地址和端口gitlab_rails['gitlab_ssh_host'] = '192.168.50.138'gitlab_rails['time_zone'] = 'Asia/Shanghai'gitlab_rails['gitlab_shell_ssh_port'] = 222

4、配置完成后,重新启动gitlab,重启需要2~3分钟。

docker restart gitlab

7.5 创建用户组和新建项目

1、浏览器访问链接:http://192.168.50.138,将密码设置为12345678

2、登录gitlab,用户名默认为root,第一次登录需要输入密码(12345678)。

3、登录成功,访问初始页面!!!

4、点击Grate a group,创建新的项目组guardwhy_cms

7.5.1 创建新项目

1、点击New project,创建新的项目!!!

2、创建jenkinsdemo01项目成功。

7.5.2 用户分配群组

1、点击小齿轮,新建用户,依次填写用户名和邮箱

2、创建用户,添加用户密码

3、创建用户成功!!

4、给新用户分配权限,点击左上角的

添加用户,赋予权限。
用户授权成功,查看具体信息。

7.6 GitLab上传项目

1、查看IDEA项目中是否存在Git,创建本地仓库

2、点击IDEA上的项目,右击Git选择Add将代码加入缓存区!!!

3、继续操作,将代码添加到本地仓库


4、右击,选择,在GitLab上获取链接,将本地工作区代码推送到远端。

5、添加URL到远端推送!!!

6、推送成功,查看GitLab上项目。

8- 码云Gitee

8.1 Gitee基本介绍

众所周知,GitHub 服务器在国外,使用 GitHub 作为项目托管网站,如果网速不好的话,严重影响使用体验,甚至会出现登录不上的情况。针对这个情况,大家也可以使用国内的项目托管网站-码云。码云是开源中国推出的基于 Git 的代码托管服务中心,网址是 https://gitee.com/ ,使用方式跟GitHub一样,而且它还是一个中文网站,如果你英文不是很好它是最好的选择。

8.2 码云帐号注册和登录

进入码云官网地址:https://gitee.com/

输入个人信息,进行注册即可。

帐号注册成功以后,直接登录。

登录以后,就可以看到码云官网首页了。

9.3 码云创建远程库

1、点击首页右上角的加号,选择下面的新建仓库

2、填写仓库名称,路径和选择是否开源(共开库或私有库),最后根据需求选择分支模型,然后点击创建按钮。

3、远程库创建好以后,就可以看到httpsssh的链接,建议使用【https】

8.4 IDEA 集成码云

8.4.1 IDEA 安装码云插件

1、Idea 默认不带码云插件,第一步要安装Gitee插件,在Idea插件商店搜索Gitee,然后点击右侧的Install按钮。

2、Idea 重启以后在Version Control设置里面看到 Gitee,说明码云插件安装成功。

3、然后在码云插件里面添加码云帐号,就可以用IDEA连接码云了。

4、连接Gitee成功

8.4.2 IDEA 连接码云

Idea连接码云和连接GitHub几乎一样,首先在Idea里面创建一个工程,初始化git 工程,然后将代码添加到暂存区,提交到本地库。

1、将本地代码 push 到码云远程库

2、获取项目的URL,自定义远程库链接。

给远程库链接定义个 name,然后再 URL 里面填入码云远程库的 HTTPS 链接即可。码云服务器在国内,用 HTTPS 链接即可,没必要用 SSH 免密链接。

3、然后选择定义好的远程链接,点击Push即可,去码云远程库查看代码,发现推送成功!!!

posted @ 2021-12-27 11:20  guardwhy  阅读(130)  评论(0编辑  收藏  举报