Git详细仓库创建、代码更新、代码提交、分支、冲突等完整版(Gitee、Github、GitLab对比)

4 篇文章 0 订阅

前言:

Git官方在线中文文档:

Git - Bookhttps://git-scm.com/book/zh/v2权威的资料来自官方,以下为个人整理和图文形式呈现,便于理解。

一、区别

  • Gitee、Github、GitLab三个都提供了 个人和团队存储、分享、发布和协同开发项目的中心化云存储功能
名称代码版块控制管理工具是否收费搭建环境联网/
github

 git

公有仓库免费

私有仓库收费(鼓励代码共享)

企业私有需要搭建可离线(分布式)
gitee

 git

个人免费

企业免费

按团队人数、仓库容量收费

可离线(分布式)
gitlab

 git

私有仓库免费可离线(分布式)
svnSubversion/TortoiseSvn免费是(集中式)那得有个SVN服务器

二、git名词术语解释

名词说明举例
仓库(Repository)产品代码仓库,保存了所有文件的修改历史。开发者A、B、C、D代码就相当于不同的货物不管是成品还是半成品 往这个仓库送
本地仓库(local Repository)本地仓库,分布式特点,这样本地就能提交版本,进行代码版本控制,也就是离线状态也能用开发者A、B、C、D自己的小仓库,即便通往仓库(Repository)的断了,也能保证货物的生产记录
暂存区(Staging area)暂存区是暂存工作区的文件变化。见下方【git图解】
索引(Index)索引是暂存区的另一种术语,也是暂存区概念
签入(Checkin)将新版本复制回仓库
签出(Checkout)

从仓库中将文件的最新修订版本复制到工作区

简单来说就是版本库的覆盖本地文件,本地的修改会丢,慎用!!

场景:
①开发者A本地改了文件,git add、git commit了,但是返回不要了,git -checkout --文件名【撤销】

②开发者A把文件手动删除/git rm删了,想还原回来

提交(Commit)将暂存区的文件提交到仓库见下方【git图解】
冲突(Conflict)多人对同一文件的同一部分进行了修改,导致了冲突的发生。开发者A、B、C、D做了修改了同一个,导致了冲突的发生。
合并(Merge)将指定分支合并到当前分支
头(HEAD)指向当前选择的分支。
修订(Revision)表示代码的一个版本状态。Git通过用SHA1 hash算法表示的ID来标识不同的版本。
标记(Tags)标记某个分支的某一个版本,方便检索和查看。
推送(Push)向远程仓库推送当前分支
拉取(Pull)从远程仓库拉取文件,并合并入当前分支。见下方【git图解】这两个尿性相同
拷贝(clone)复制远程仓库到本地
master(默认分支)

供所有团队成员修改,按我的理解,它是“主干”更贴切

可设置由谁来推送,谁来合并规则,删除规则,则表示谁都可以操作

默认为保护分支:自定义保护策略,默认仓库管理员才能管理(推送)被保护的分支
 

产品底图(相当于最终稳定呈现版)
常规分支

常规分支可通过gitee管理后台可视化创建,可以通过git命令创建

就是团队成员用的分支,如果不创建,那就是默认master分支

仓库成员(开发者权限及以上)可推送分支

基于底图画出来的草稿,开发者A、B、C、D都可以可以画
只读分支任何人都无法推送代码(包括管理员和所有者),需要推送代码时应设为“常规”或“保护”分支

三、git图解

稍微瞄一眼这图,几乎git常用的命令都基于这个图!!!

为了便于理解,什么时候用clone、add、commit、pull、push、reset、fetch、diff 这个图就有思路

四、svn图解

五、git、svn命令一览

当然,

svn --help

git  --help  命令都能看到

svn命令git命令

六、svn详细搭建链接

服务器与本地安装SVN详细步骤(linux/centos)_四肢发达的猿的博客-CSDN博客_本地svn服务器安装SVN步骤:①安装svn环境②创建svn库(项目库)③设置权限用户、设置密码、设置认证域④将svn库与项目关联起来 svn checkout⑤设置钩子一、服务器安装svn有网络的情况下,一句代码完成,下载大小2.8M,安装大小13M yum install subversion效果如下:输入Y,进行转换安装。,如下图:验证是否安装成功,如下图:svn --version二、创建项目的SVN库比如我们搭一个商城,仓库名为b2c-house:这个仓库我要放在/.https://blog.csdn.net/weixin_39921970/article/details/109180489?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167144561716782388094839%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=167144561716782388094839&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-2-109180489-null-null.nonecase&utm_term=svn&spm=1018.2226.3001.4450

linux/centos服务器项目代码上传到SVN仓库本地SVNUP_四肢发达的猿的博客-CSDN博客基于上一篇的服务器搭建SVN环境,这里描述下服务上的代码提交到svn仓库,然后本地checkout。前置条件:①服务器已有svn环境②项目目录已有SVN版本控制③项目目录下个别文件或文件夹,是在服务器中,但是没有在版本控制中,这类的本地svn是不能svn up下来这个文件。那就是服务器上的项目文件,加入版本控制。项目目录结构如下:如果服务器上有个test.html 没在版本控制中,如下图本地SVN UP 是没有test.html只需要两步:①递归提交项目目录下所有文件,这一步只是.https://blog.csdn.net/weixin_39921970/article/details/109185584?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167144561716782388094839%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=167144561716782388094839&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-109185584-null-null.nonecase&utm_term=svn&spm=1018.2226.3001.4450

七、gitee完整使用步骤

  • 7.1平台账号

  • 7.2建仓库(remote repository)

仓库和项目先后创建都没关系,都可以相互关联上

 

成功后,仓库信息如下:

  • 7.3建项目

仓库和项目先后创建都没关系,都可以相互关联上

  • 7.4安装本地git工具

 Windows安装方式有两种:

①手动安装,官网下载对应的版本,执行安装

②【社区维护】的 Chocolatey 自动安装

 官方地址:

Git - Downloading Packagehttps://git-scm.com/download/win

MacOS安装方式也有两种:

①命令行开发者工具(Xcode Command Line Tools)在Terminal里首次运行git命令即可。

②【官方维护】的macOS Git 安装

官方地址:

Git - Downloading Packagehttps://git-scm.com/download/mac

本文以Windows安装git为例


 安装到底,验证成功如下图:

  • 7.5 把线上的仓库的代码拉到本地项目文件夹

步骤一:瞄一眼仓库路径

gitee首页→代码 →  ···  → 功能设置 → 基础信息

或者:

gitee首页→代码 →  仓库 → 任意一个仓库 → 概览

 

步骤二:本地新建个项目文件夹

demo-vue-master

 进目录下右击,如下图:

 第一次需全局配置,第二次就不需要这一步(毕竟我这用户都登录了git)

git config --global user.name "Gitee账号的姓名"
git config --global user.email "Gitee账号的邮箱"

初始化

git init

如下图:如果没有说明是.开头的文件被操作系统隐藏了,可以用ls -ah命令就可以看到

 测试下新建测试文件,并提交gitee仓库如下:

touch README.md

题外话:这个命令为啥没有git 呢,因为是linux命令的创建文件(好歹git是Linux开发用于管理Linux系统开源代码管理版本的初衷,linux用了2周开发了git,完善至今)so,git工具支持linux的命令。最后附图《linux命令附图》

效果如下图:

把README.md提交至暂存区

git add README.md
git commit -m "任意备注,不写也行,必须得引号 这句才把暂存的版本提交到远程gitee创的仓库"
git remote add origin https://gitee.com/gitee自动生成的名称/repositoryname.git #本地关联远程仓库,#后的不要写
git push -u origin master  #推送到默认分支master,可新加分支

结合“git、svn图解”git add 只是到暂存区(表示加入版块控制了,但还没提交到仓库)

 需要git commit -m ""

因为是add 和 commit 分两步,也可以这样用:

git add file1.htm
git add file2.htm file3.htm
git commit -m '提交了三个文件'

本地操作如下图:

验证gitee仓库有没文件:

  • 7.6其他开发成员加入并使用git版本控制

gitee首页→右侧 → 添加人员  (这个是先加人员)

gitee首页→代码 →  ···  → 仓库列表 功能设置 → 成员管理(选择上面加入的人员,加入到这个项目的仓库代码同步工作)

团队其他成员同步gitee仓库代码

配置各自的用户名和邮箱

这个会保存在

git config --global user.name "你的名字"
git config --global user.email "你的邮箱"

TIPS:

查看git配置

git config --list

git config 有比较多的属性,如颜色配置、忽略文件设置、强制添加被忽略文件、添加例外规则、全局配置 --global,用户配置等

拉取仓库代码

第一次拉取:

git init  #第一次用初始化,后续不用
git clone 仓库地址  #第一次要这个
git pull 仓库地址 master   #指定仓库的哪一个分支,默认master

或者用第一次拉取:

git init  #第一次用初始化,后续不用
git remote add origin https://....
git pull origin master #此处拉取得是master分支的代码

很多帖子用clone,原理是 首次用git 需登录、 初始化(init)、用git把本地仓库连接远程仓库、然后拉代码或提交代码的操作

后面的每次拉取就是:

git pull

提交代码

git add 文件名  #若添加当前目录的全部文件 git add .
git commit -m "备注"

查看提交记录

git log #这个如果很多条,看这累,可以加参数   --pretty=oneline

比较代码变动:

git diff 文件名

版本回退

git reset --hard HEAD^  #HEAD当前版本  上一个版本HEAD^ 上上个版本 HEAD^^ 上1000个版本 HEAD~1000

线上个版本有差异

git fetch --all   #拉到本地仓库

git reset --hard origin/master #本地仓库拉到本地

git pull   #拉

八、分支管理

分支特性,分支的创建和切换瞬间完成。是git在各版本控制工具脱颖而出。

分支的创建和合并,只是主分支master和其他分支指针变化,这个就是和引用数据类型类似的概念,没有创建销毁再创建的弯弯绕绕,就是指向不同就达到效果了。

场景:

①单人开发或者多人开发某些功能,使用分支,用完即删,安全便捷。创建分支开发和使用master开发效果是一样的,git建议使用创建分支开发,更安全。

②修bug,如开发这A开发的分支是develop,要改个bug,手头上的功能做了一半,临时紧急要修个bug,需要等手头上功能做完或者隐藏已做的功能,才能把bug改了提交develop的工作(svn就有这毛病)。

毕竟:master是稳定的,用于最终发布版本的,正常不能在这个上面干活(不正常使用的才在这里直接干活 O(∩_∩)O哈哈~)

8.1 创建分支、切换分支

8.1.1创建分支

git branch develop #开发分支名:develop

8.1.2切换分支

git checkout develop #这个是覆盖本地 切换,见头部《git名词术语解释》中介绍

!!!覆盖本地修改,如果是开发一半的功能,不能用checkout,而是用switch切换分支

以上创建切换可合并如下:(这里新建的肯定还没代码,用checkout)

git checkout -b develop  # -b 表示创建branch 分支名称为develop,checkout检出

效果图如下:*为当前分支

8.2 合并分支

①首先看下

在develop分支工作目录 新建提交了一个文件,版本库是有了新记录

 ②切回master分支查看,git checkout master

 合并分支命令:

git merge develop #把代码成果develop 合并到当前master分支中

如下图:

8.3 删除分支

8.2中,develop分支成果已拿到master,develop可以删除

删除分支命令:

git branch -d develop

强制删除分支:(未合并,用这个)

git branch -D develop

效果如下,分支只剩下master了

8.4 bug分支

完整步骤:

①当前开发一半的功能在develop分支上

②修临时紧急bug,那需要把develop一半的功能隐藏(git stash)

③切换需要修复的分支,如master (git check master)

④创建bug分支,同分支创建,修改某文件后git add、git commit

⑤删除bug分支 git 

⑥切回develop继续做功能 git switch develop(这里不用checkout 切换,不然一半的功能就丢了

8.5 feature分支

一周可能会不定期开发几个新的小功能,又不想把分支搞乱,可以用这个分支

完整步骤:

①创建并切换分支 git switch -c feature1

②提交 分分钟写好了demo.txt,git add demo.txt 、git commit -m ‘搞定了’

③切回develop,git switch develop

④合并

⑤删除分支

8.6 冲突解决

开发者A和开发者B同时修改同一个文件,同一个行代码分别提交,合并基本会冲突

合并如下图: 

 本地打开文件/或者git工具用linux命令打开文件/瞅瞅:

 

冲突解决 !(不发布也行)

8.7 标签管理

标签官方是指用于里程碑类型有重要意义的版本,发布稳定版,如v1.0,v2.0

8.7.1 标签创建

git tag #标签查看
git tag v1.0 #轻量标签 创建标签名为v1.0
git tag -l "v1*" #查看版本含‘v1’的所以标签,如v1.0,v1.1.1等
git tag -a v1.2 -m "version 1.2" #有备注的标签
git show v1.0  #查看对应标签对应的提交信息
git tag -a v1.3 9fceb02 #给提交的历史版本中的一个打标签,9fceb02是日志 缩略形式出来的
git tag -d v1.0 #删除v1.0的标签
git push origin v1.0  #共享标签,就是本地和远程共享,也就是默认设置的是本地,提交标签的设置
git push origin --tags #提交本地所有标签到远程
git push origin --delete v1.0 #删除远程标签
git checkout v1.0  #检出标签v1.0所对应的提交版本




linux命令附图

支持在git工具中使用linux命令

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

··零··

您的鼓励,是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值