IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Git详细仓库创建、代码更新、代码提交、分支、冲突等完整版(Gitee、Github、GitLab对比) -> 正文阅读

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

一、区别

  • 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命令打开文件/瞅瞅:

?

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

linux命令附图

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

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-12-25 11:29:10  更:2022-12-25 11:30:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年7日历 -2024/7/27 15:03:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码