Git、GitLab、 GitHub 、Gitee 的使用
Git#
Git 介绍#
Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种
项目。(在公司里面就是管理代码的!)
Git 易于学习,占地面积小,性能极快。 它具有廉价的本地库,方便的暂存区域和多个工作
流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。
Git保存的不是文件的变化或者差异,而是不同时刻的文件快照。
版本控制 是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
版本控制 其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,
方便版本切换。
2、为什么需要版本控制#
答:个人开发过渡到团队协作 。
3、版本控制工具#
-
集中式版本控制工具
CVS、SVN(Subversion)、VSS......
集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存 所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或 者提交更新。多年以来,这已成为版本控制系统的标准做法。 这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什 么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要 远比在各个客户端上维护本地数据库来得轻松容易。 事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕 机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
-
分布式版本控制工具
解决了 集中式版本控制工具的缺点
像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码 仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用 其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次 对整个文件仓库的完整备份。 分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷: // 1. 服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的) // 2. 每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
4、Git 简史#
5、工作机制#

用语:添加到暂存区、提交到本地库、push 到远程库。
6、Git 和 代码托管中心#
代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库。
代码托管中心 ---远程库
➢ 局域网
✓ GitLab
➢ 互联网
✓ GitHub(外网)
✓ Gitee 码云(国内网站)
Git 安装#
官网地址: https://git-scm.com/
查看 GNU 协议,可以直接点击下一步。
next,next,next 一路默认就好了!
Finish 后, 右键,Git Bash 在 终端里输入git --version
查看git
版本,如图所示,说明 Git 安装成功。

Git 常用命令#
基于开发案例,详细讲解 git 的常用命令
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户邮箱 |
git init | 初始化本地库 |
git status | 查看本地库状态 |
git add 文件名 | 添加到缓存区 |
git commit -m "日志信息" 文件名 | 提交到本地库 |
git reflog / git log | 查看历史记录 / 详细信息 |
git reset --hard 版本号 | 版本穿梭 |
1、设置用户签名和邮箱#
设置完后可以在 .gitconfig
中查看
语法:
git config --global user.name 用户名
git config --global user.email 邮箱
查看:

说明:
签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看
到,以此确认本次提交是谁做的。Git 首次安装必须设置一下用户签名,否则无法提交代码。
※注意:这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任
何关系。
2、初始化本地库#
语法:
git init
操作 及 查看:


3、查看本地库状态#
语法:
git status
操作:

新增文件:hello.txt


就是添加 到暂存区
4、添加到暂存区#
语法:
git add
文件名
操作:

查看:
此时我们再来看,git 的状态,添加到暂存区,文件由红转绿,这时候是可以删掉的,删也只是从暂存区里面删了,工作区的还是好好的!

5、提交到本地库#
将暂存区的文件提交到本地库,形成自己的一个历史版本
基本语法:
git commit -m "日志信息" 文件名

**create mode 100644 ** 是啥?
100代表regular file,644代表文件权限
6、查看历史#
语法:
git reflog 查看版本信息
git log 查看版本详细信息
操作:

7、修改文件(hello.txt)#
- 修改
hello.txt
之后,查看git
状态(git status
),文件变红了,说明文件没有被追踪,(添加,提交)
-
所以再来一次,(
git add
) 添加到暂存区,文件变绿,说明已经添加到暂存区 -
(
git commit
) 文件绿色就可以提交到本地库,查看git
状态(git status
) ,这时它就又干净了 -
此时查看 历史记录
8、版本穿梭#
语法:
git reset --hard
版本号
原理:
底层就是移动的 head 指针

具体的说就是在 .git 目录下,有个 HEAD 的文件

指向了第三个版本,这里是我又转到了第三个版本

Git 分支#
1、概述和优点#

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时
候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
分支的好处:
(1)同时并行推进多个功能开发,提高开发效率
(2)各个分支在开发过程中,如果某一个分支开发失败,不会对其它分支有任何影响,失败的分支删除,重新开始即可。
2、分支操作#
命令名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | (合并分支)把指定的分支合并到当前分支 |
(1)查看分支
语法:
git branch -v
操作:
(2)创建分支
语法:
git branch 分支名
操作:
比如说,我要给我的代码创建一个热修分支

(3) 切换分支&修改分支
master 分支 作为用户用的,所以我们在 master 分支上,引出了其它分支(快照,走向了不同的路径)
切换分支语法:git checkout hot-fix
(4)合并分支
1、正常合并
正常合并:master 没有修改,hot-fix 在 master 基础之上增加了两行东西,和 master 并不冲突。
【注意:】如果想把 hot-fix 分支 合并在 master 分支上,必须站在 master 分支上合并。

结果:

2、冲突合并
什么是冲突合并?
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替
我们决定使用哪一个。必须人为决定新代码内容。
演示一下冲突合并!
-
刚才正常合并了 hot-fix ,所以此时 hot-fix 和 master 两个分支内容是一样的,所以在 master 上首先修改。
【合并分支】只会修改主动合并的分支,不会修改要合并的分支。很容易理解!
hello.txt 倒数第二行,添加 master test
解决冲突
-
查看 git 状态
自动合并,代码冲突了,需要我们自己手动合并。OK ! 打开 hello.txt
-
手动,把想要的留下,不想要的去掉!
-
添加到暂存区,提交到本地库,形成历史版本【注意】这里不能带文件名,否则会报错
-
再次查看
【最后注意:】合并分支只会修改主动合并的分支,不会修改要合并的分支。
master、hot-fix 其实都是指向具体版本记录的指针。
当前所在的分支,其实是由 HEAD 决定的。所以创建分支的本质就是多创建一个指针。
HEAD 如果指向 master,那么我们现在就在 master 分支上。
HEAD 如果执行 hotfix,那么我们现在就在 hotfix 分支上。
3、Git 团队协作机制#
1、团队内协作

2、跨团队协作
GitHub#
GitHub 操作#
1、创建远程库 & 创建别名#
-
创建远程库
略~ 登录 GitHub
--->
new repository -
创建别名
git remote -v
作用:查看当前所有远程地址别名git remote add 别名 远程地址
例子:
git remote add git-demo https://github.com/w-y-k/git-demo.git
2、推送本地库到远程库 push#
语法:git push 别名 分支
实例:
推送
成功:

3、拉取远程库到本地库 pull#
语法:
git pull 别名 分支名
实例:
git pull git-demo master

此时我们查看 git 状态

工作树是干净的,说明 pull 这个动作是会自动,提交本地库的!
查看代码:发现已经拉取下了(本地库和远程库的代码已经同步了)

4、克隆远程库到本地 clone#
clone 代码是不需要登录账号的 !
语法:git clone 项目地址
实例:
git clone https://github.com/w-y-k/git-demo.git
总结:clone 会做如下操作。 1、拉取代码 2、初始化本地库 3、创建别名
团队内协作#
团队成员必须加入到 GitHub 项目团队里面去,才能进行 pull ,push 操作。
项目管理员,添加团队成员

复制一下邀请函(其实也是一个连接地址),然后通过 钉钉,微信,发送给团队成员。
团队成员,在自己的GitHub 里面的地址栏,复制管理员发来的邀请函。

然后就出现了,邀请函!接受,就称为项目团队的一员!可以,push 代码了。

跨团队协作#
另一个团队先要根据,本团队发来的链接,点击fork 叉 到 他 的远程库

另一个团队,修改代码,之后,发送一个 Pull request ,
本团队,刷新之后, Pull request 会出现一个请求,
本团队审核通过之后,可以
GitHub_SSH 免密登录#
ssh-keygen
:生成 ssh 免密登录的协议
-t
:指定哪种加密算法来生成
rsa
: 著名的非对象加密协议
-C
:描述
运行命令生成 .ssh
公钥秘钥目录
全: ssh-keygen -t rsa -C wykwork2022@163.com
复制公钥,然后在GitHub settings 中添加SSH 公钥。
如下:
【注意】这里没有.ssh 目录,连敲三次回车
测试 ssh 代码拉取,和推送
拉取:


ssh push 操作

IDEA 集成 Git#
1、环境准备#
配置 Git 忽略文件#

maven 项目的 target 目录
问题 1: 为什么要忽略它们?
答:与项目实际功能无关,不参与服务器上的部署运行,消除 IDE 之间的差别。
问题 2:怎么忽略?
(1)配置一个文件(忽略文件) xxx.ignore (前缀不重要,随便起,建议是 git.ignore
)
这个文件存放位置,原则上哪里都可以,但是为了便于让 ~/.gitconfig 文件引用,建议也放在用户家目录下。
git.ignore
文件模板如下
Compiled class file
.class
定位 Git 程序#

2、初始化 & 添加 & 提交#
用 idea 初始化本地库
next
说明 这个项目被 Git 接管了!
添加 add 到暂存区

都变绿了!
提交 commit 到本地库

变白了,说明已经提交到本地库!
3、切换版本#
蓝色的文件表示,这个文件被追踪过,但是被修改了,没有add,和 commit 。
那们我们添加暂存区,提交本地库,(在 idea 里面,这个文件已经被追踪了,所以可以直接提交,不用添加暂存区了!)
查看版本:
切换会 first 版本 ,发现代码发生了变化
4、创建分支 & 切换分支#
法1:

法2:


也可以在这里切换分支

5、合并分支#
正常合并#
合并成功!
冲突合并#
在同一位置,有两套不同的代码修改,由我们手动选择,需要的代码,或者说去掉哪些代码。
idea 非常的智能,如下!
手动合并成功!

IDEA 集成 GitHub#
1、设置 GitHub 账号#
idea 使用 GitHub 要先登录 GitHub 的账号 ,用 账号密码登录非常慢,可能登录 100来次成功一次! 如下

所以我们使用 Token 登录!
【注意】在 GitHub 中生成Token ,注意只能生成一次,刷新网页就找不到了,如果下次再用忘了的话只能重新申请了!
2、分享项目到 GitHub#
不用在 GitHub 创建远程库,直接从idea 中把项目分享到 GitHub 上。
next
3、推送代码到远程库#
注意:push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,
push 的操作是会被拒绝的。也就是说,要想 push 成功,一定要保证本地库的版本要比远程
库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地
代码的区别!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地
代码更新到最新以后,然后再修改,提交,推送!
4、拉取远程库代码合并到本地库#
5、克隆代码到本地#
Gitee 码云#
创建远程库#
和 GitHub 是一样的。
IDEA 集成 Gitee#
-
先在 idea 装一下 Gitee 插件,然后重启一下 idea。
-
在 Gitee 中添加自己的Gitee 账号。
导入 GitHub 项目#
码云连接 GitHub 进行代码复制和迁移
码云提供了直接复制 GitHub 项目的功能,方便我们做项目的迁移和下载。
具体操作如下:
如果 GitHub 项目更新了以后,在码云项目端可以手动重新同步,进行更新!
局域网代码托管平台-GitLab#
1、简介和安装环境准备#
简介:
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 等组织使用。
GitLab 官网地址
官网地址:https://about.gitlab.com/
安装说明:https://about.gitlab.com/installation/
2、安装 & 初始化服务 & 启动服务#
服务器准备
准备一个系统为 CentOS7 以上版本的服务器,要求内存 4G,磁盘 50G。
关闭防火墙,并且配置好主机名和 IP,保证服务器可以上网。
此教程使用虚拟机:主机名:gitlab-server IP 地址:192.168.6.200
安装包准备
Yum 在线安装 gitlab- ce 时,需要下载几百 M 的安装文件,非常耗时,所以最好提前把
所需 RPM 包下载到本地,然后使用离线 rpm 的方式安装。
下载地址:
https://packages.gitlab.com/gitlab/gitlab-
ce/packages/el/7/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm
注:资料里提供了此 rpm 包,直接将此包上传到服务器/opt/module 目录下即可。
3、登录 GitLab 并创建远程库#
4、IDEA 集成 GitHub#
作者:走马
出处:https://www.cnblogs.com/zou-ma/p/16319899.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
本博文版权归本博主所有,未经授权不得转载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)