文章目录
**
此文档来源于网络,如有侵权,请联系删除!
**
前言
**
Git
是一个开源的
分布式
版本控制系统,可以有效、高速地处理从很小到非常大的项目
版本管理
。也是
Linus Torvalds
为了帮助管理
Linux内核
开发而开发的一个开放源码的
版本控制软件
。**
一、Git
1.Git-概述
**
Git概述
**
- Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。
- Git 易于学习,占地面积小,性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和ClearCase 等版本控制工具。
1.1.Git-概述-版本控制介绍
**
版本控制介绍
**
- 版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。
- 版本控制其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。
1.2.Git-概述-分布式版本控制VS集中式版本控制
**
分布式版本控制VS集中式版本控制
**
- 集中式版本控制:CVs、SVN(Subversion)、VSS
集中化的版本控制系统诸如 CVS、SVN等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。
这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。
事分两面,有好有坏。这么做显而易见的缺点是中央服务器的单点故障。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
- 分布式版本控制:Git、Mercurial、 Bazaar、 Darcs…
像 Git 这种分布式版本控制工具,客户端提取的不是最新版本的文件快照,而是把代码仓库完整地镜像下来(本地库)。这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份。
分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷:
1.服务器断网的情况下也可以进行开发(因为版本控制是在本地进行的)
2.每个客户端保存的也都是整个完整的项目(包含历史记录,更加安全)
1.3.Git-概述-代码托管中心
**
代码托管中心
**
- 代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为
远程库
。- 局域网- GitLab- 互联网- GitHub(外网)- Gitee码云(国内网站)
1.4.Git-概述-安装和客户端的使用
**
安装和客户端的使用
**
2.Git-命令(常用命令)
命令名称作用git config --global user.name 用户名设置用户签名git config --global user.email 邮箱设置用户签名git init初始化本地库git status查看本地库状态git add 文件名添加到暂存区git commit -m “日志信息” 文件名提交到本地库git reflog查看历史记录git reset --hard 版本号版本穿梭
2.1.Git-命令-设置用户签名
**
设置用户签名
**
- 设置用户名
git config --global user.name 用户名
- 设置邮箱
git config --global user.email 邮箱
- 查看是否配置成功- 打开电脑C盘→用户→电脑名称用户文件夹→查看.gitconfig文件内容
**
说明
**
- 签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。
Git 首次安装必须设置一下用户签名,否则无法提交代码。
注意:
这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任何关系。
2.2.Git-命令-初始化本地库
**
初始化本地库
**
- 初始化本地库
git init
> 初始化完成以后,文件夹下就会出现一个.git的隐藏文件
2.3.Git-命令-查看本地库状态
**
查看本地库状态
**
- 查看本地库状态(首次查看,工作区没有任何文件)
git status
- 编辑文件(与Linux命令相同,文件存在则编辑,文件不存在则创建+编辑)
vim 文件名
> 按i进入编辑模式→输入内容→按Esc退出编辑模式→输入":wq"按回车键保存退出 - 显示当前目录下的内容
- 查看本地库状态(再次查看,检测到有未跟踪的文件)
2.4.Git-命令-添加暂存区
**
添加暂存区
**
- 添加暂存区
gitadd 文件名
- 查看本地库状态(添加到暂存区,再次查看)
- 删除暂存区的文件(删除暂存区的文件后,工作区文件还是存在的)
gitrm--cached 文件名
- 查看本地库状态(删除暂存区的文件,再次查看,检测到有未跟踪的文件)
2.5.Git-命令-提交本地库
**
提交本地库
**
- 提交本地库
git commit -m"日志信息" 文件名
- 查看本地库状态(提交本地库后查看本地库状态,显示在分机主机上无任何可提交的东西,工作树是干净的)
- 查看引用日志信息
git reflog
- 查看详细日志信息
git log
2.6.Git-命令-修改文件
**
修改文件
**
- 修改文件(与Linux命令相同,文件存在则编辑,文件不存在则创建+编辑)
vim 文件名
> 按i切换编辑模式> 编辑完成后按Esc退出编辑模式→输入":wq"按回车保存退出
2.7.Git-命令-版本穿梭
**
版本穿梭
**
- 查看版本信息
git reflog
- 查看版本详细信息
git log
- 版本穿梭
git reset --hard 版本号
3.Git-分支
3.1.Git-分支-概述和优点
**
概述和优点
**
- 什么是分支
在版本控制过程中,同时推进多个任务,为每个任务我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是个单独的副本。(分支底层其实也是指针的引用)
- 分支的好处
同时并行推进多个功能开发,提高开发效率。各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
命令名称作用git branch -v查看分支git branch 分支名创建分支git checkout 分支名切换分支git merge 分支名把指定的分支合并到当前分支上
3.2.Git-分支-查看
**
查看
**
- 查看
git branch -v
3.3.Git-分支-创建
**
创建
**
- 创建
git branch 分支名
3.4.Git-分支-切换
**
切换
**
- 切换
git checkout 分支名
3.5.Git-分支-合并分支(正常合并)
**
合并分支(正常合并)
**
- 合并分支(正常合并)
git merge 分支名
3.6.Git-分支-合并分支(冲突合并)
**
合并分支(冲突合并)
**
- 冲突产生的原因:
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。必须人为决定新代码内容。
**
案例(模拟合并冲突)
**
**
解决合并冲突
**
“查看状态(检测到有文件有两处修改)“
4.Git-团队协作和跨团队协作
**
团队协作和跨团队协作
**
- 团队协作
- 跨团队协作
二、Git-GitHub
命令名称作用git remote -v查看当前所有远程地址别名git remote add 别名 远程地址起别名git push 别名 分支推送本地分支上的内容到远程仓库git clone 远程地址将远程仓库的内容克隆到本地git pull 远程库地址别名 本地库分支名将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
GitHub官网:https://github.com/
- 注册(根据提示要求进行注册)
- 登录(根据提示要求进行登录)
- 登录以后画面显示
1.GitHub-创建远程库&创建别名
**
创建远程库
**
- 创建远程库****1.点击加号→New repository(创建新的远程仓库)2.设置远程库名称(一般是和自己本地库同名)→Create repository(创建新的远程仓库)3.创建成功4.查看远程库的HTTPS链接&SSH链接
**
创建别名
**
- 查看别名(查看当前所有远程地址别名-如图所示没有查到别名)
git remote -v
- 创建别名
git remote add 别名 远程地址
创建别名以后在查看别名(别名创建成功)
2.GitHub-推送本地库到远程库
**
推送本地库到远程库
**
- 推送本地库到远程库
git push 别名 分支
提示输入yes后回车报错再次执行命令还是报错 - 如上图所示报错解决办法:https://blog.csdn.net/weixin_44904239/article/details/132025848****推送本地库到远程库成功GitHub查看推送内容
3.GitHub-拉取远程库到本地库
**
拉取远程库到本地库
**
- 修改Git Hub远程库内容
- 拉取远程库到本地库
git pull 远程库地址别名 本地库分支名
4.GitHub-克隆远程库到本地
**
克隆远程库到本地
**
- 克隆远程库到本地****1.拿到远程库的链接地址2.本地电脑创建一个新的文件夹用来存储远程库克隆文件(在新建的文件夹中打开Git bash)****3.克隆远程库到本地
git clone 远程地址
4.克隆完成后查看新建文件夹中就会有从远程库克隆过来的文件等。。。 - 总结:clone会做如下操作- 1.拉取代码- 2.初始化本地仓库- 3.创建别名
5.GitHub-团队内协作
**
团队内协作
**
其他人想要推送和拉取代码到远程库,需要邀请其他人加入到到这个团队中
- 邀请人员加入到团队中1.访问GitHub官网:https://github.com/ 然后登录2.点击需要邀请成员加入的项目3.Setting→Collaborators→Add people4.输入被邀请人的账号→添加成员5.复制邀请函(将邀请行发给被邀请的成员)6.被邀请的人需要访问GitHub→登录GitHub→将收到的邀请行复制到已经登录的浏览器地址栏然后访问→点击Accept invitation接受邀请→然后就可以看到项目内容等信息7.被邀请的人就可以推送和拉取代码到远程库
6.GitHub-跨团队协作
**
跨团队协作
**
- A将远程仓库的项目地址复制发送给跨团队协作的人员B。
- 搜索项目(两种方法)
方法一
:跨团队协作的人员B拿到项目地址后,将项目地址复制到已经登陆了GitHub的浏览器地址栏
方法二
:跨团队协作的人员B以 “账号名/项目名” 的方式,在GitHub网站的搜索框内进行搜索 - 跨团队协作的人员B将项目叉到自己账号中(自己账号下就会显示叉过来的项目)
- 跨团队协作的人员B就可以克隆到自己的本地库或者直接线上修改(修改完成以后只有自己能看到,A是看不到的)
- 跨团队协作的人员B修改完代码后创建拉取请求
- A查看拉取请求
- A合并跨团队协作人员B修改过的代码
7.GitHub-SSH免密登录
**
SSH免密登录
**
- 生成SSH密钥(打开Git Bash执行下面命令)
ssh-keygen -t rsa -b4096-C"邮箱号"
> 此处邮箱号为创建GitHub账号的电子邮件地址,途中会让你输入密码啥的,不用管,一路回车即可,则会生成SSH密钥(如果重新生成的话会覆盖之前的SSH密钥)。 - 查看公钥&私钥文件(两种方法)
方法一
:找到公钥文件所在的目录直接打开查看> 此处可以看到一对文件,其中以>> .pub>
> 结尾的是公钥文件,另一个没有后缀的是私钥文件。方法二
:通过打开Git Bash执行命令查看 - 将SSH公钥添加到GitHub****1.登录GitHub,点击头像2.点击Settings3.SSH and GPG keys→New SSH key4.填写标题→粘贴公钥→Add SSH key5.添加成功
三、Git-IDEA集成Git
1.IDEA集成Git-环境准备
1.1.环境准备-配置Git忽略文件
**
配置Git忽略文件
**
- Eclipse特定文件
- IDEA特定文件
- Maven工程的targer目录
**
为什么要忽略这些文件?
与项目的实际功能无关,不参与服务器上部署运行。把他们忽略掉能够屏蔽IDE工具之间的差异。**
- 配置Git忽略文件****1.创建忽略规则文件
xxxx.ignore(前缀名随便起,建议是git.ignore)
> 这个文件的存放位置原则上放在哪里都可以,>> 为了便于让 ~/.gitconfig 文件引用,建议放在用户家目录下>
>git.ignore
文件模板内容如下:# Compiled class file 编译后的类文件*.class# Log file 日志文件*.log# BlueJ files*.ctxt# Mobile Tools for Java.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.settingstarget.idea*.iml
2.在.gitconfig
文件中引用忽略配置文件(此文件在Windows的家目录中)[user] name = xiongjian email = [email protected][core] excludesfile = C:/Users/xiongjian/git.ignore
> C:/Users/xiongjian/git.ignore代表的是git.ignore文件存在的目录位置,> **>> 注意:这里要使用 "正斜线(/)",不要使用 "反斜线(\)">
> **
1.2.环境准备-IDEA定位Git程序
**
IDEA定位Git程序
**
- 打开IDEA→File→Settings
- Version Control→Git→选择自己本地安装的Git目录→Test测试→测试成功点击OK→OK
2.IDEA集成Git-初始化&添加&提交
2.1.初始化本地库
- VCS→Import into Version Control→Create Git Repository
- 选择需要被Git管理的项目→OK
2.2.添加到暂存区
- pom.xml文件显示红色,表示该文件未被追踪,未添加到暂存区
- 选择pom.xml文件,鼠标右键→Git→Add
2.3.提交到本地库
- pom.xml文件显示绿色,表示该文件已添加到暂存区,还未提交到本地库
- 选择pom.xml文件,鼠标右键→Git→Commit File
- 可以编写提交消息→查看提交内容→Commit
2.4.同时多个文件添加到暂存区&多个文件提交到本地库
- 创建新的文件的时候会有提示是否要将创建的文件添加到Git中
- 两个文件未添加到暂存区
- 选择整个项目,鼠标右键→Git→Add
- 两个文件未添加到本地库
- 选择整个项目,鼠标右键→Git→Commit Directory
- Commit
3.IDEA集成Git-切换版本
- 蓝色的文件表示该文件被追踪过,但是文件内容做了修改,还未添加到暂存区
- 添加暂存区
- 提交本地库(蓝色文件可以不添加暂存区直接提交本地库)
- 查看版本信息
- 切换版本(选择要切换的版本,鼠标右键→Checkout Revision)> 黄色头指针指向了second commit版本,页面内容也发生了变化
4.IDEA集成Git-创建分支&切换分支
4.1.创建分支(两种方法)
**
方法一
**
- 点击项目名称,鼠标右键→Git→Repository→Branches
- New Branch
- 起分支名→OK
**
方法二
**
- Git:master→New Branches
4.2.切换分支
Git:master→选择要切换的分支→Checkout
5.IDEA集成Git-合并分支(正常合并)
**
合并分支(正常合并)
**
- 切换到hot-fix分支
- 在hot-fix分支上修改或添加代码
- 提交本地库
- 切换到master分支
- 将hot-fix分支合并到master分支
6.IDEA集成Git-合并分支(冲突合并)
**
合并分支(冲突合并)
**
- 切换到hot-fix分支
- 在hot-fix分支上修改或添加代码
- 提交本地库
- 切换到master分支
- 在master分支上修改或添加代码
- 提交本地库
- 这里清楚的看到针对于同一个版本修改了两次(此时合并必然发生冲突)
- 将hot-fix分支合并到master分支
- 合并成功
四、Git-IDEA集成GitHub
1.IDEA集成GitHub-IDEA安装GitHub插件
- File→Settings
- Plugins→搜索 “GitHub” 查看是否安装(我这边已经安装好了,如果没有安装就自行安装)
2.IDEA集成GitHub-设置GitHub账号
1.File→Settings
2.Version Control→GitHub→点击+号
3.输入GitHub账号和密码→Log In(IDEA使用账号和密码很难登录上)
4.使用口令登录
5.访问GitHub官网→登录→点击头像
GitHub官网:https://github.com/
6.Settings
7.Developer settings
8.Personal access tokens→Tokens (classic)→Generate new token
9.Generate new token (classic)
10.取名→设置口令失效时间→设置权限(勾选所有权限)→Generate token
11.复制口令(创建完成第一时间复制口令,不然刷新一下就找不到了,就要重新创建口令了)
12.粘贴口令→Log In
13.OK
3.IDEA集成GitHub-分享项目到GitHub
注意:push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push 的操作是会被拒绝的。也就是说,要想 push 成功,一定要保证本地库的版本要比远程库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!
1.VCS→lmport into Version Control→ Share Project on GitHub
2.定义远程库名称→起别名→添加描述信息→Share分享
分享前确认网络流畅,能正常访问GitHub官网,避免分享失败
分享失败解决方法参考:https://blog.csdn.net/weixin_44904239/article/details/132105434
3.创建远程库及推送中
4.用浏览器登录授权
5.在GitHub上成功共享项目
6.成功后,GitHub就能看到分享成功的远程库及推送的代码
4.IDEA集成GitHub-推送代码到远程库
1.添加或修改代码
2.提交本地库
3.推送代码到GitHub远程库(两种方法)
**
方法一
**
**
方法二
**
4.建议使用SSH链接方式
5.GitHub网站上复制项目的SSH链接
6.创建SSH链接方式
7.修改成SSH链接方式
8.推送代码到GitHub远程库
9.推送成功
5.IDEA集成GitHub-拉取远程代码合并本地库
注意:pull 是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。
1.访问GitHub官网,登录后修改代码并提交修改
2.打开IDEA→VCS→Git→Pull
3.拉取远程代码合并本地库成功
6.IDEA集成GitHub-克隆代码到本地
1.删除本地库项目代码
2.打开IDEA→Check out from Version Control→Git
3.打开GitHub官网→登录→复制项目链接
4.粘贴项目链接→选择克隆下来项目存放的位置→Test(测试是否正常)→Clone
5.等待项目克隆完成
6.项目克隆完成
五、Git-码云(Gitee)
众所周知,GitHub服务器在国外,使用GitHub作为项目托管网站,如果网速不好的话,严重影响使用体验,甚至会出现登录不上的情况。针对这个情况,大家也可以使用国内的项目托管网站-码云。
码云是开源中国推出的基于Git的代码托管服务中心,网址是 https://gitee.com/,使用方式跟GitHub一样,而且它还是一个中文网站,如果你英文不是很好它是最好的选择。
1.码云-账号注册登录&创建远程库
1.1.账号注册
1.2.账号登录
1.3.创建远程库
1.点击 “+” 号→创建仓库
2.输入仓库名称→创建
3.创建完成
2.码云-IDEA集成Gitee码云
2.1.IDEA集成码云
1.File→Settings
2.Plugins→Marketplace→搜索"Gitee"→Install→Restart IDE→Restart
2.2.IDEA连接码云
1.File→Settings
2.Version Control→Gitee→点击 “+” 号
3.输入账号、密码→Lon In→OK
2.3.IDEA集成码云-推送代码到远程库
1.打开Gitee官网→登录→复制项目链接
2.打开IDEA→选择要推送项目点击鼠标右键→Git→Repository→Push
3.origin→Define Remote→设置名称、粘贴项目链接→OK
4.输入Gitee账号和密码→Continue
5.origin→origin-gitee→Push
6.推送成功
3.码云-导入GitHub项目
1.创建项目→点击导入→选择导入方式,然后填写完信息点击导入即可
六、Git-GitLab
自建代码托管平台-GitLab
1.GitLab-简介和环境安装准备
1.1.GitLab简介
GitLab 是由 GitLabInc.开发,使用MIT 许可证的基于网络的Git 仓库管理工具,且具有wiki和 issue 跟踪功能。使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。
- GitLab官网地址: https://about.gitlab.com/
- 安装说明:https://gitlab.cn/install/
1.2.GitLab安装准备
- 服务器准备
**准备一个系统为 CentOS7 以上版本的服务器,要求内存 4G,磁盘 50G。配置好主机名和IP,保证服务器可以上网。
我这边使用虚拟机:主机名:gitlab-server IP 地址: 192.168.3.240
**
#修改主机名(修改完成以后重启服务器生效)
vim /etc/hostname
- 安装包准备
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 目录下即可。
**
2.GitLab-安装&初始化服务&启动服务
2.1.GitLab安装
1.执行下面命令先安装rpm包
sudo rpm -vih /opt/module/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm
2.根据下面安装说明一步步操作
- 安装说明:https://gitlab.cn/install/
sudo yum install -y curl policycoreutils-python openssh-server perlsudo systemctl enable sshdsudo systemctl start sshdsudo firewall-cmd --permanent --add-service=httpsudo firewall-cmd --permanent --add-service=httpssudo systemctl reload firewalld
sudo yum install postfixsudo systemctl enable postfixsudo systemctl start postfix
#这步执行等待时间比较长需要耐心等待curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh |/bin/bash#会删除安装旧的版本,安装新的版本sudo EXTERNAL_URL="https://gitlab.example.com" yum install -y gitlab-jh
#查看密码文件cat/etc/gitlab/initial_root_password
2.2.GitLab初始化服务
#GitLab初始化服务(需要耐心等待,出现如下图所示表示初始化服务成功)
gitlab-ctl reconfigure
#修改gitlab.rb配置文件
vim /etc/gitlab/gitlab.rb
将如下图所示改为服务器IP地址
#修改后内容
external_url "http://192.168.3.240"
#修改完成后重新加载配置文件
gitlab-ctl reconfigure
2.3.GitLab启动服务
#启动GitLab服务
gitlab-ctl start
3.GitLab-登录GitLab&修改密码&GitLab设置为中文
3.1.登录GitLab
1.打开浏览器访问服务器IP地址
2.输入账号:root 密码:根据前面内容找到初始密码粘贴进行登录
3.2.修改GitLab密码
1.点击头像→Preferences
2.Password→输入旧的密码、新的密码→Save password
3.密码更新成功,请重新登录
3.3.GitLab设置为中文
1.点击头像→Preferences
2.Preferences→Language语言选择→选择中文→Save changes保存更改
3.退出账号重新登陆才会生效
4.GitLab-创建远程库
1.创建项目→创建空白项目
2.设置项目名称→公开→创建项目
3.创建成功
5.GitLab-IDEA集成GitLab
5.1.IDEA安装GitLab插件
1.File→Settings
2.Plugins→搜索 “gitlab” →Install→Restart IDE→Restart
5.2.IDEA添加GitLab服务器
1.File→Settings
2.Vresion Control→GitLab→Add New GitLab Server
3.输入链接地址→选择对应的方式→点击OK→OK
5.3.IDEA推送代码到GitLab服务器
1.GitLab上复制项目链接地址
2.鼠标右击要推送的项目→Git→Repository→Push
3.origin→Define Remote
4.命名→粘贴链接地址→OK
5.origin→origin-gitlab→Push
6.输入账号和密码→Continue
7.推送成功
**
此文档来源于网络,如有侵权,请联系删除!
**
版权归原作者 QQ1215461468 所有, 如有侵权,请联系我们删除。