GIT、Gitee、GitLab、GitCode详解

文章目录

        • 第1章、 Git概述
          • 1.1、集中式版本控制和分布式版本控制
          • 1.2、git历史
          • 1.3、使用
          • 1.4、Git与代码托管中心
        • 第2章、 Git安装、常用命名
          • 1.1、安装
          • 1.2、Git常用命令
        • 第3章 、Git分支操作及团队协作机制
          • 3.1、分支的好处
          • 3.2、分支的操作
          • 3.3、Git团队协作机制
        • 第4章、 GitHub操作
          • 4.1、创建远程仓库
          • 4.2、远程仓库操作
          • 4.3、跨团队协作
          • 4.4、SSH免密登录(*****)
        • 第5章、 IDEA集成Git
          • 5.1配置Git忽略文件
          • 5.2充位Gi程序
          • 5.3初始化本地库
          • 5.4添加到新存区
          • 5.5提交到本地库
          • 5.6切换板本
          • 5.7创建分支与切换分支
          • 5.8合并分支
          • 5.9解决冲突
        • 第6章、国内代码托管中心码云Gitee
          • 6.1、简介
          • 6.2、码云创建远程仓库
          • 6.3、idea使用码云
          • 6.4、码云复制GitHub项目
        • 第7章、自建代码托管平台Gitlab
          • 7.1、简介
          • 7.2、Gitlab安装与配置
          • 7.3、IDEA集成Gitlab
          • 7.4、删除gitlab项目
          • 7.5、给member添加push权限
        • 第八章 csdn的gitCode
        • 第九章 git push失败原因
        • 第十章、git commit 提交规范

内容要点

GitHub 创建远程库、 代码推送Push、 代码拉取Pull、 代码克隆 Clone、SSH免密登录、Idea集成GitHub
Gitee码云 码云创建远程库、 Idea集成Gitee号 、码云连接Gitlab、进行代码的复制和迁移
Gitlab GitLab服务器的搭建和部署、 idea集成Gitlab

第1章、 Git概述

开源免费的分布式版本控制系统,目前最新版本2.36.1

1.1、集中式版本控制和分布式版本控制
例子 优点 缺点
集中式版本控制 CVS、SVN,存的是版本间的差异,占用空间小,回滚速度慢 项目存放在单一的服务器上,便于项目管理 中央服务器单点故障
分布式版本控制 Git、Mercurial、Bazaar、Darcs,分布式版本控制存的不是版本与版本间的差异,而是版本间的索引,完整的版本快照,速度块 解决集中式缺点,每个客户端存的都是完整的项目(历史更新)

VCS系统-----常用软件:
CVS 2000以前
SVN 2010年以前
Git 2010年以后

1.2、git历史

linux与git之父:托瓦兹

GIT、Gitee、GitLab、GitCode详解_第1张图片

1.3、使用

工作区------>git add 暂存区------->git commit 本地库(生成历史版本) ------->git push 到远程库

1.4、Git与代码托管中心

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

局域网 GitLab
互联网 GitHub(外网)、Gitee码云(国内网站)

第2章、 Git安装、常用命名

1.1、安装

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

查看GNU协议,可以直接点击下一步。

git version   //git version 2.13.0.windows.1   查看版本
1.2、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 log 查看详细版本信息
git reset --hard 版本号 版本穿梭

注:

①签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。

注意:这里设置用户签名和将来登录Github(或其他代码托管中心)的账号没有任何关系。

设置用户签名后,由wanglu@DESKTOP-3T1MLM1 MINGW64 ~/Desktop 可知,在c盘用户的wanglu下,有.gitconfig文件,里面存储设置的name与邮箱

②git status //文件颜色是红色的代表该文件在工作区,绿色代表已存暂存区

③git rm --cached //删除暂存区文件

④生成的git文件名称意义:新建一个工作区workspace,git bash here,初始化git init

hooks--目录包含客户端或服务端的钩子脚本;
info--包含一个全局性排除文件
logs--保存日志信息
objects--目录储所有数据内容;
refs---目录存储指向数据(分支)的提交对象的指针
config--文件包含项目特有的配置选项
description--用来显示对仓库的描述信息
HEAD--文件指示目前被检出的分支
index--文件保存暂存区信息

注:在生成的.git里面的HEAD保存当前的文件是在哪个分支;在refs里面的heads里,保存了当前分支的最新版本

第3章 、Git分支操作及团队协作机制

3.1、分支的好处

什么是分支?

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

分支的好处?

同时并行推进多个功能开发,提高开发效率。

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

3.2、分支的操作
git branch 分支名 创建分支
git branch -v 查看分支
git branch -a 查看所有分支(本地和远程分支)
git branch -r 查看远程分支,如果远程分支一直不显示,就git fetch,在git branch -r
git checkout 分支名 切换分支
git merge 分支名 把指定的分支合并到当前分支上

1)冲突合并

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

 - master、hot-fix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。所以创建分支的本质就是多创建一个指针。
 - HEAD如果指向master,那么我们现在就在master分支上。
 - HEAD如果执行hotfix,那么我们现在就在hotfix分支上。
 - 所以切换分支的本质就是移动HEAD指针。
3.3、Git团队协作机制

1)团队内协作

有一个远程仓库(代码托管中心),可执行pull、push、clone、

2)跨团队协作,体现分布式

fork 叉子

pull request 拉取请求

merge

第4章、 GitHub操作

4.1、创建远程仓库

①+New Repository、创建远程库名Repository name(和本地名一样就行)、选公共库,具有读权限(私有库,收费)、create repository

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

创建远程仓库别名,本地git仓库与远程仓库关联(两种方式:1.https方式;2.SSH方式)

git remote add origin https://github.com/Jianhaochung/DGL_GCNER.git   //远程仓库名称长,起个别名origin
git remote add origin [email protected]:Jianhaochung/DGL_GCNER.git   //ssh

推送本地分支到远程仓库

git push origin master   //推送分支
git push-u origin master
//如果本地分支master推送到远程分支dev
git push origin master:dev

git push origin dev --force    //覆盖远程dev分支的内容

删除本地及远程分支

1 先切换到别的分支: git checkout dev
2 删除本地分支: git branch -d dev
3 如果删除不了可以强制删除,git branch -D dev
4 有必要的情况下,删除远程分支:git push origin --delete dev
5 在从公用的仓库fetch代码:git fetch origin master:dev
6 然后切换分支即可:git checkout dev

拉取代码

git pull origin master   //拉取代码

克隆远程仓库到本地

git clone https://github.com/Jianhaochung/DGL_GCNER.git    //克隆不需要登录账号

邀请团队加入

setting-----manage access   
member  ----invite member  ----把邀请函链接发送给成员

拉取远程库内容

git pull origin master   //拉取代码
4.3、跨团队协作

成员拉取、下载、fork代码

4.4、SSH免密登录(*****)

生成ssh免密登录协议

ssh-keygen -t rsa -C atguigu@yueyue.com   
//使用rsa非对称加密算法协议  连敲3次回车
ssh-keygen -t rsa -C “你的邮箱地址”   
//执行生成私钥的命令后,会提示你输入一些信息,这里不用输入,直接回车即可(重复几次会车)。

在C:\Users\wanglu\ssh下有,id_rsa私钥、 id_rsa.pub公钥,获取公钥,复制到账号的SSH and GPG keys里面

ssh方式克隆

ssh  	
//ssh.dll    ssh.exe    ssh-add.exe   ssh-agent.exe   ssh-copy-id   sshd.exe         ssh-keygen.exe   ssh-keyscan.exe  ssh-pageant.exe
ssh-keygen.exe  
cat ~/.ssh/       
//查看是否生成了id_rsa和id_rsa.pub
cat ~/.ssh/id_rsa.pub  //获取公钥   id_rsa是私钥   id_rsa.pub是公钥
 
cd ~/.ssh   //进入 .ssh 目录,查看是否有ssh
ls        //找到 id_rsa.pub 文件
cat id_rsa.pub  //查看公钥
ssh-keygen-t rsa //生成密钥

GIT、Gitee、GitLab、GitCode详解_第2张图片

第5章、 IDEA集成Git

5.1配置Git忽略文件

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

创建忽略文件(git.ignore),放在用户的根目录下

.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

还要在git.config下引用忽略的文件

[user]
    name=Laynee 
    email=Layne@atquigu.come
[core]
    excludesfile=C:/Users/asus/git.ignoree
    注意:这里要使用"正斜线(/)",不要使用"反斜线(\)"
5.2充位Gi程序

在idea的配置

file->setting->version control->git ->bin->git.exe->test
5.3初始化本地库
vcs->input into version control->create git repository
git 接管项目
5.4添加到新存区

在文件上右键add

5.5提交到本地库

git commit

5.6切换板本

在Version的版本里面的某一个,checkout Revision

5.7创建分支与切换分支
new Branch
branch checkout
5.8合并分支

merge into current

5.9解决冲突
conficts
手动merge

第6章、国内代码托管中心码云Gitee

6.1、简介

众所周知,GitHub服务器在国外,使用GitHub作为项目托管网站,如果网速不好的严重影响使用体验,甚至会出现登录不上的情况。针对这个情况,大家也可以使用国内托管网站-码云。

码云是开源中国推出的基于Git的代码托管服务中心,网址是https/gitee.com/,使用方式跟GitlHub一样,而且它还是一个中文网站。

6.2、码云创建远程仓库
6.3、idea使用码云

idea不带码云,需要安装gitee插件

6.4、码云复制GitHub项目

码云提供了直接复制GitlHub项目的功能,方便我们做项目的迁移和下载。

选择github连接,在码云创建已有仓库

强制刷新

第7章、自建代码托管平台Gitlab

7.1、简介

Gitlab由乌克兰程序员DmitriyZaporozhets和ValerySizov 开发,它使用Ruby 语言写成。后来,一些部分用Go语言重写。截止2018年5月,该公司约有290名团队成员,以及2000多名开源贡献者。Gitlab被IBM,Sony,JulichResearchCenter,NASA,Alibaba,Invincea,OReillyMedia,Leibniz-Rechenzentrum(L.RZ),CERN,SpaceX等组织使用。

7.2、Gitlab安装与配置

1)服务器准备

只支持cetos7以上,要求内存4G,磁盘50G
关闭防火墙,并且配置好主机名和IP,保证服务器可以上网。
此教程使用虚拟机:主机名:gitlab-server IP地址:192.168.6.200

2)安装包

Yum在线安装gitlab-ce时,需要下载几百M的安装文件,非常耗时,所以最好提前把所需RPM包下载到本地,然后使用离线pm的方式安装。

下载地址:

https://packages.gitlab.com/gitlab/gitlab-
ce/packages/el/7/gitlab-ce-13.10.2-ce.0.e17.×86 64.rpm

注:资料里提供了此rpm包,直接将此包上传到服务器/opt/module目录下即可。

3)编写安装脚本

参考官网编写gitlab的安装脚本。保证服务器能上网

4)初始化GitLab服务

Gitlab添加组、创建用户、创建项目

5)启动GitLab服务

gitlab-ctl stop
gitlab-ctl start

6)使用浏览器访问GitLab

直接使用ip地址访问
使用主机名访问
7.3、IDEA集成Gitlab

安装gitlab插件
在plugin里搜索安装

只要GitLab的远程库连接定义好以后,对GitLab远程库进行pull和clone的操作和Github和码云一致,此处不再赘述。

7.4、删除gitlab项目
 1. 打开具体的项目
 2. setting
 3. General
 4. Advanced
 5. Remove project
 6. 输入项目名称
7.5、给member添加push权限

GIT、Gitee、GitLab、GitCode详解_第3张图片
Gitlab用户在组中权限
Gitlab用户在组中一般有五种权限:Guest、Reporter、Developer、Maintainer、Owner。

Guest 可以创建issue、发表评论,但不能读写版本库
Reporter 可以克隆代码,但不能提交,QA、PM可以赋予这个权限;
Developer 可以克隆代码、开发、提交、push,RD可以赋予这个权限;
Maintainer 可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限;
Owner 可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限。

Gitlab中的组和项目权限
Gitlab中的组和项目有三种访问权限:Private、Internal、Public

Private 只有组成员才能看到
Internal 只要登录的用户就能看到
Public 所有人都能看到

开源项目和组设置的是Internal

第八章 csdn的gitCode

2020年9月10日,CSDN正式推出全新升级的开源平台 GitCode

看了基本的介绍,基本和GitHub和开源中国的Gitee类似,基本操作也都是基于git,所以难度也很小

第九章 git push失败原因

9.1、You are not allowed to push code to this project 常见六大原因

  1. 用户名 / 邮箱 / 密码是否输入正确
git config user.name | git config user.email  //查询
git config user.name xxx | git config user.email xxx  //设置当前仓库信息
  1. windows凭据
    可以在windows凭据中添加普通凭据,将访问网址设置为白名单。(不过一般连接push时输入账号密码就自动配置了,和问题1相仿)
  2. 是否在项目代码服务端添加公钥
    如果需要公钥和私钥访问的话,没有把公钥挂上代码管理服务端也可能git push失败
  3. 是否只能http访问
    有的项目或项目接口只能http访问,就不要用ssh的方式。
  4. 若ssh访问添加用户名
    地址形如 [email protected],将@前替换为自己的项目用户名(这一点很多时候git@也是能正常运行的)
  5. 是否有权限
    配置好以上条件的前提下。我自己因为在gitlab没有管理员为我添加开发者权限(默认为访客),所以一直不能上传。

第十章、git commit 提交规范

类型 说明
feat 用户功能的新特性(项目自身构建方式的更新,不算新特性)
fix 用户功能修复(项目自己的构建错误修复,不算功能修复)
docs 更新文档
style 代码格式化或风格变化
refactor 重构(修改变量名、文件目录结构等不影响功能的变动)
test 增加、修改测试代码,不涉及生产运行代码变化
chore 日常维护,不涉及生产运行代码变化(写错个字、变更个版本号)

如果已提交记录不符合规范,可以使用git重写提交记录的方法进行修改

你可能感兴趣的:(git,github,java)