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使用规范及使用流程 -> 正文阅读

[开发工具]【软件编写说明文档与工程代码管理】git使用规范及使用流程

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理

文章目录


前言

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!

本文先对git使用规范及使用流程做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章


提示:以下是本篇文章正文内容

在这里插入图片描述

一、gitlab的简介

1.git用于代码管理

Git是目前世界上最先进的分布式(代码)版本控制系统。对项目开发过程中使用git进行版本管理进行规范

为什么Git版本控制系统要比别的版本控制系统好用?因为GIt跟踪和管理的是GIt的修改,而不是文件【防盗标记–盒子君hzj】
.
.

2.git用于debug

可以在git的版本迭代中进行前后版本的对比,用回溯对比法进行代码debug

.
.

二、git的使用流程

(0)第0步:Git的安装

wim从官网直接下载即可,正常安装,但是不要有中文路径
ubuntu可以用命令行下载git

官网
https://git-scm.com/downloads
.
.

(1)第一步【下载、新建代码】:clone拉取下载项目/新建自己的项目方法

目的
目的都是为了把本地的版本库和远程的版本库进行同步操作

(1)方式一:【clone拉取下载项目到本地目录】

步骤一:创建本地版本库(repository)

版本库概念【防盗标记–盒子君hzj】

简单一点可以看作一个目录,创建这个目录可以被Git管理,在里面的文件,
你可以看到他的修改内容和历史修改痕迹,以及数据还原恢复。

步骤

第一步:创建一个目录
指令: 创建一个目录:    mkdir   目录名 

      跳转到当前目录: cd 目录名

      显示当前目录:     pwd
第二步:把目录进行git初始化
指令:初始化: git init
初始化成功之后,再该目录有一个.git的目录的
备注:.git文件的作用:这个目录是Git来跟踪管理版本库,不要去动。【防盗标记–盒子君hzj】

.
.

步骤二:从远程库拉取项目到本地

由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以在Github官网进行设置

第1步:创建SSH Key

在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Git Bash,创建SSH Key
ssh-keygen -t rsa -C “youremail@example.com”
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可【防盗标记–盒子君hzj】
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面,设置SSH和keys

在这里插入图片描述
为什么GitHub需要SSH Key?

因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。【防盗标记–盒子君hzj】

确保你拥有一个GitHub账号后,我们就即将开始远程仓库的学习
.
.

github和gitlab的区别
如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。

github大家都能看得到,gitlab只能公司内部人员看得到,相当于自己大了一个git的服务器【防盗标记–盒子君hzj】

最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
.
.

第3步:在远程库clone拉取下载项目到本地目录

远程库其实和本地库的实质是一样的,而在GitHub创建一个Git仓库 ,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。【防盗标记–盒子君hzj】

(1)git clone指令

示例
git clone git@XXX:lXXX/git_test.git

在这里插入图片描述
备注:这里使用的是 https协议

注意Git仓库地址
你也许还注意到,GitHub给出的地址不止一个,还可以用git@github.com:zGuangYuan/Githubfile.git这样的地址。实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。

使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https【防盗标记–盒子君hzj】

.
.
(2)注意
使用gitlab要确保自己有开发权限,如没有则需向项目所有者申请,git.xair.cn:ligantong/git_test.git在gitlab上有提供

这种方式,则是直接把github仓库中的 Githubfile文件夹克隆到本地,本初始化这个文件夹为git可管理的文件夹,且默认本地版本库的master和远程仓库的master是关联的

如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。
.
.
.
.
.

(2)方式二:【在本地新建自己的项目】

步骤一:创建本地版本库(repository)

版本库概念

简单一点可以看作一个目录,创建这个目录可以被Git管理,在里面的文件,
你可以看到他的修改内容和历史修改痕迹,以及数据还原恢复。【防盗标记–盒子君hzj】

步骤

第一步:创建一个目录
指令: 创建一个目录:    mkdir   目录名 

      跳转到当前目录: cd 目录名

      显示当前目录:     pwd
第二步:把目录进行git初始化
指令:初始化: git init
初始化成功之后,再该目录有一个.git的目录的
备注:.git文件的作用:这个目录是Git来跟踪管理版本库,不要去动。【防盗标记–盒子君hzj】

.
.

步骤二:创建自己的远程库

由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以在Github官网进行设置

第1步:创建SSH Key

在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Git Bash,创建SSH Key
ssh-keygen -t rsa -C “youremail@example.com”
你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面,设置SSH和keys

在这里插入图片描述
为什么GitHub需要SSH Key?

因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

确保你拥有一个GitHub账号后,我们就即将开始远程仓库的学习【防盗标记–盒子君hzj】
.
.

github和gitlab的区别
如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到的,相当简单,公司内部开发必备。

github大家都能看得到,gitlab只能公司内部人员看得到,相当于自己大了一个git的服务器

最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
.
.

第3步:创建远程库

远程库其实和本地库的实质是一样的,而在GitHub创建一个Git仓库 ,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。

(1)第一步:登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库【防盗标记–盒子君hzj】
在这里插入图片描述

(2)第二步:新建完成后,根据GitHub的提示,在本地的Github仓库下运行命令(把本地仓库和远程仓库进行关联)
在这里插入图片描述
.
.

步骤三:把本地的版本库和远程的仓库进行关联起来

执行命令:git remote add origin https://github.com/xxxx/XXX.git
此时这个命令就包含了git init了,也就意味着已经初始化这个文件夹为git 可管理的,且和远程进行关联。【防盗标记–盒子君hzj】

步骤四:在版本库(repository)的目录中添加/创建自己的文件

.
.

(2)第二步【新建分支】:新建自己的工作分支方法

(1)分支的定义

分支就像通道一样,不同的通道(dev)都能到达同一个终点(master),如果多人占用了一个通道,工作速度就会很慢,但是如果每个人都有一个分支(通道),他们就不会互相影响,高效率的完成自己的工作

我们每次提交(commit)了文件之后就会连成一条线,都会添加到一个个人分支,严格来说不是指向提交,提交并合并到主分支master才是真正的提交
.
.

(2)分支命名规范

1)master分支为稳定版分支

仅用于发布新版本,只有经过测试稳定后的代码才可合并到master分支,平时不能在上面干活。【防盗标记–盒子君hzj】

2)dev为开发者分支

日常开发的代码都合并到该分支,但不要直接在该分支上修改。

3)feature为功能分支

可用于某个功能开发过程中,可根据具体模块名或者功能名称来命名,该分支为主要的干活分支。

4)bug-fix/为临时的修复bug分支

需要修复bug时,特别是对于已发布版本的bug,需要新建该类型分支,用于紧急的bug修复。如果在开发功能过程中发现的bug,还不是已发布版本,则可在原来的功能分支上修复后再提交
.
.
.

(3)分支相关指令

(1)查看当前分支

git branch【防盗标记–盒子君hzj】

(2)创建自己的分支

方法一:git switch -c <分支名>
方法二:git branch -b <分支名>

(3)切换分支

git checkout <分支名name>

(4)创建+切换分支

git checkout -b <分支名name>

(5)删除分支

git branch -d <分支名name>

(6)合并某分支到当前分支

git merge <name>【防盗标记–盒子君hzj】

.
.
.

(3)第三步【代码开发】:(本地)功能代码开发方法【常用】

在一个干净的分支上进行开发之前,先将dev分支合并到本分支,以从最新的代码库开始开发

步骤

(1)切换到dev分支
	git switch dev

(2)拉取最新的代码
	git pull

(3)切换到自己的工作分支
	git switch <分支名>【防盗标记–盒子君hzj】

(4)将dev分支合并到本分支
	git merge dev

(5)开始进行自己的代码逻辑与算法开发

.
.
.

(4)第四步【提交代码到自己分支】:(在自己的分支内)提交代码【常用】

(1)原理

当前所在目录下,使用 git add 命令把文件添加到暂存器,再使用 git commit 命令把暂存器的文件提交到版本库的master分支上。最后使用命令:git push -u origin master ,就可以把本地的master 和远程的master关联起来
.

(2)提交流程步骤

(1)添加到暂存区
		定要看一下cmd/pwd窗口显示的当前所在目录【防盗标记–盒子君hzj】
		git add .
	或者 git add <file>

(2)添加到本地仓库master/dev分支上(提交)
		git commit -m "<comment备注信息>"

(3)上传到远程仓库
		git push
		推送到远程库(不成功,看前面的密钥是否建立)
		成功后,我们去Github官网看一看是否同步数据

在这里插入图片描述

(3)注意

每次提交代码时,最好都至少有一个完整的小功能,即对整个模块细分功能进行开发,每个小功能完成后即进行代码的提交,这样也让开发者在开发的过程中理清整体开发思路

评论要清楚说明该提交相对于上一次提交所做的工作
.
.
.

(5)第五步【合并当前分支到某分支】:分支合并请求【常用】

(1)步骤

(1)打开gitlab主页,并进入该项目主页,点击Create merge request按钮,进入合并请求页面New Merge Request

(2)点击Change branches,修改Source branch为自己开发的分支,修改Target branch为dev分支,最后点击Compare branches and continue

(3)修改的Title和Description,描述修改的内容【防盗标记–盒子君hzj】

(4)在Assignee中选择相应的项目管理者,提交后,后台会自动给这里选择的人员发送邮件进行通知

(5)点击Submit merge request

(2)解决冲突问题

情形1

问题
在自己分支上修改后,提交代码到远程仓库时发生冲突

产生原因
远程仓库的当前分支,与当前提交的分支,修改了同一个文件,导致冲突【防盗标记–盒子君hzj】

解决办法
将远程代码仓库拉取(pull)到本地仓库的工作区,这时Git会将可以合并的修改内容进行合并,并将不能合并的文件内容进行提示,开发者只需要对提示的冲突内容进行修改即可再次推送到远程仓库(add → commit → push),需要注意的时,修改时注意要与之前改动开发人员进行协商,防止会影响他人的相关功能。

情形2

问题
在自己分支上修改后,提交到远程仓库后,在gitlab上进行合并请求时,发生冲突

产生原因
修改的提交前,存在其他分支向目标分支提交合并,并且合并的内容中存在与当前分支修改的内容有冲突的地方,即可能修改了同一个文件

解决方法
点击上图的Resolve conflicts,跳到如下页面,会提示冲突的地方【防盗标记–盒子君hzj】
与相关开发人员商量使用哪种,简单选择一种时点击Use ours或者Use theirs,要编辑内容,则使用Edit inline模式,最后提交Commit to source branch

(3)注意

合并请求需要在网页端进行。代码提交到远程仓库后,需要在gitlab网页提交合并请求,请求将本分支的代码合并到dev分支
.
.
.

(6)git的其他指令

git status

查看全部文件状态
git status命令可以让我们时刻掌握仓库当前的状态,
上面的命令输出告诉我们,textfile.txt被修改过了,但还没有准备提交的修改。

git diff [文件名]

查看文件发生的变化

git log

查看在Gitfile这个版本库中,你的修改日志,进而把文本内容退回上一次编辑的位置【防盗标记–盒子君hzj】

git reset

你需要知道你的版本号(commit id),进而把文本内容退回上一次编辑的位置

git tag -a -m <描述>

创建带说明的标签

git tag -d

删除标签

git show

看详细信息

参考资料

https://blog.csdn.net/qq_36243942/article/details/81169913?utm_source=app&app_version=4.18.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

  开发工具 最新文章
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常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-11-16 19:02:43  更:2021-11-16 19:03:22 
 
开发: 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年12日历 -2024/12/23 23:00:29-

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