GIT、Gitee、GitLab、GitCode详解

内容要点

GitHub创建远程库、 代码推送Push、 代码拉取Pull、 代码克隆 Clone、SSH免密登录、Idea集成GitHub
Gitee码云码云创建远程库、 Idea集成Gitee号 、码云连接Gitlab、进行代码的复制和迁移
GitlabGitLab服务器的搭建和部署、 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之父:托瓦兹

请添加图片描述

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 config 配置

Git中有三层config文件:系统、全局、本地

// 查看系统config,是git的安装目录
git config --system --list   
// 查看当前用户(global)配置,当前登录用户的配置。(Win:C:\Users\Administrator.gitconfig) --global 全局
git config --global  --list 
// 查看当前仓库配置信息,适用于特定git项目的配置。–local当前项目
git config --local  --list

注:

①签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。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 git@github.com: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 //生成密钥

在这里插入图片描述

第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权限

在这里插入图片描述
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访问添加用户名
    地址形如 git@xxx.xxx.xxx.com,将@前替换为自己的项目用户名(这一点很多时候git@也是能正常运行的)
  5. 是否有权限
    配置好以上条件的前提下。我自己因为在gitlab没有管理员为我添加开发者权限(默认为访客),所以一直不能上传。
第十章、git commit 提交规范
类型说明
feat用户功能的新特性(项目自身构建方式的更新,不算新特性)
fix用户功能修复(项目自己的构建错误修复,不算功能修复)
docs更新文档
style代码格式化或风格变化
refactor重构(修改变量名、文件目录结构等不影响功能的变动)
test增加、修改测试代码,不涉及生产运行代码变化
chore日常维护,不涉及生产运行代码变化(写错个字、变更个版本号)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值