提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
TODO:写完再整理
- 系列文章目录
- 前言
- 一、gitlab的简介
- 1.git用于代码管理
- 2.git用于debug
- 二、git的使用流程
- (0)第0步:Git的安装
- (1)第一步【下载、新建代码】:clone拉取下载项目/新建自己的项目方法
- (1)方式一:【clone拉取下载项目到本地目录】
- 步骤一:创建本地版本库(repository)
- 第一步:创建一个目录
- 第二步:把目录进行git初始化
- 步骤二:从远程库拉取项目到本地
- 第1步:创建SSH Key
- 第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面,设置SSH和keys
- 第3步:在远程库clone拉取下载项目到本地目录
- (2)方式二:【在本地新建自己的项目】
- 步骤一:创建本地版本库(repository)
- 第一步:创建一个目录
- 第二步:把目录进行git初始化
- 步骤二:创建自己的远程库
- 第1步:创建SSH Key
- 第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面,设置SSH和keys
- 第3步:创建远程库
- 步骤三:把本地的版本库和远程的仓库进行关联起来
- 步骤四:在版本库(repository)的目录中添加/创建自己的文件
- (2)第二步【新建分支】:新建自己的工作分支方法
- (1)分支的定义
- (2)分支命名规范
- 1)master分支为稳定版分支
- 2)dev为开发者分支
- 3)feature为功能分支
- 4)bug-fix/为临时的修复bug分支
- (3)分支相关指令
- (1)查看当前分支
- (2)创建自己的分支
- (3)切换分支
- (4)创建+切换分支
- (5)删除分支
- (6)合并某分支到当前分支
- (3)第三步【代码开发】:(本地)功能代码开发方法【常用】
- (4)第四步【提交代码到自己分支】:(在自己的分支内)提交代码【常用】
- (1)原理
- (2)提交流程步骤
- (3)注意
- (5)第五步【合并当前分支到某分支】:分支合并请求【常用】
- (1)步骤
- (2)解决冲突问题
- (3)注意
- (6)git的其他指令
- git status
- git diff [文件名]
- git log
- git reset
- git tag -a -m <描述>
- git tag -d
- git show
- 参考资料
前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!
本文先对git使用规范及使用流程做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章
提示:以下是本篇文章正文内容
一、gitlab的简介 1.git用于代码管理Git是目前世界上最先进的分布式(代码)版本控制系统。对项目开发过程中使用git进行版本管理进行规范
为什么Git版本控制系统要比别的版本控制系统好用?因为GIt跟踪和管理的是GIt的修改,而不是文件【防盗标记–盒子君hzj】
.
.
可以在git的版本迭代中进行前后版本的对比,用回溯对比法进行代码debug
.
.
wim从官网直接下载即可,正常安装,但是不要有中文路径
ubuntu可以用命令行下载git
官网
https://git-scm.com/downloads
.
.
目的
目的都是为了把本地的版本库和远程的版本库进行同步操作
版本库概念【防盗标记–盒子君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是公钥,可以放心地告诉任何人。
为什么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仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
.
.
远程库其实和本地库的实质是一样的,而在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是关联的
如果有多个人协作开发,那么每个人各自从远程克隆一份就可以了。
.
.
.
.
.
版本库概念
简单一点可以看作一个目录,创建这个目录可以被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是公钥,可以放心地告诉任何人。
为什么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仓库,任何人都可以看到喔(但只有你自己才能改)。所以,不要把敏感信息放进去。
.
.
远程库其实和本地库的实质是一样的,而在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】
.
.
分支就像通道一样,不同的通道(dev)都能到达同一个终点(master),如果多人占用了一个通道,工作速度就会很慢,但是如果每个人都有一个分支(通道),他们就不会互相影响,高效率的完成自己的工作
我们每次提交(commit)了文件之后就会连成一条线,都会添加到一个个人分支,严格来说不是指向提交,提交并合并到主分支master才是真正的提交
.
.
仅用于发布新版本,只有经过测试稳定后的代码才可合并到master分支,平时不能在上面干活。【防盗标记–盒子君hzj】
2)dev为开发者分支日常开发的代码都合并到该分支,但不要直接在该分支上修改。
3)feature为功能分支可用于某个功能开发过程中,可根据具体模块名或者功能名称来命名,该分支为主要的干活分支。
4)bug-fix/为临时的修复bug分支需要修复bug时,特别是对于已发布版本的bug,需要新建该类型分支,用于紧急的bug修复。如果在开发功能过程中发现的bug,还不是已发布版本,则可在原来的功能分支上修复后再提交
.
.
.
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【防盗标记–盒子君hzj】
.
.
.
在一个干净的分支上进行开发之前,先将dev分支合并到本分支,以从最新的代码库开始开发
步骤
(1)切换到dev分支 git switch dev (2)拉取最新的代码 git pull (3)切换到自己的工作分支 git switch <分支名>【防盗标记–盒子君hzj】 (4)将dev分支合并到本分支 git merge dev (5)开始进行自己的代码逻辑与算法开发
.
.
.
当前所在目录下,使用 git add 命令把文件添加到暂存器,再使用 git commit 命令把暂存器的文件提交到版本库的master分支上。最后使用命令:git push -u origin master ,就可以把本地的master 和远程的master关联起来
.
(1)添加到暂存区 定要看一下cmd/pwd窗口显示的当前所在目录【防盗标记–盒子君hzj】 git add . 或者 git add(3)注意(2)添加到本地仓库master/dev分支上(提交) git commit -m " " (3)上传到远程仓库 git push 推送到远程库(不成功,看前面的密钥是否建立) 成功后,我们去Github官网看一看是否同步数据
每次提交代码时,最好都至少有一个完整的小功能,即对整个模块细分功能进行开发,每个小功能完成后即进行代码的提交,这样也让开发者在开发的过程中理清整体开发思路
评论要清楚说明该提交相对于上一次提交所做的工作
.
.
.
(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分支
.
.
.
查看全部文件状态 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



