git初识(四)

news2024/12/24 20:46:50

rebase(变基)

它能让git提交记录简洁

多个记录整合成一个记录

git rebase -i HEAD~3

从最新记录开始依次找3条记录进行合并

git rebase -i 版本号

从该版本号开始一直合并到最新记录

在做记录合并时,建议不要和已push到仓库的记录

beyond compare

在git的使用过程中,我们在合并时经常会遇到冲突,此时我们就需要手动的一行一行改,属实有点麻烦,beyond compare这个软件就可以快速解决冲突

  1. 安装beyond compare
  2. 在git中配置
git config --local merge.tool bc3
git config --local mergetool.path 'D:\Beyond Compare 4'
git config --local mergetool.keepBackup false
  1. 应用beyond compare 解决冲突
git mergetool

命令总结

  • 添加远程连接(别名)
git remote add origin 地址
  • 推送代码
git push origin dev
  • 下载代码
git clone 地址
  • 拉取代码
git pull origin dev
等价于
git fetch origin dev
git merge origin/dev
  • 保持代码提交整洁(变基)
git rebase 分支
  • 记录图形展示
git log --graph --pretty=format:"%h &s"

多人协同开发gitflow工作流思路

如何多人协同开发?

比如你们公司老板交代了一个项目,让你负责,这个项目已经上线了,需要你们更进一步的更新维护,同时和你一起开发的有另外两个同事小刘和小张。比如这个项目就是娱乐系统,前面我们说了master分支上面就是上线的版本,比如你是这个项目的负责人,你在dev分支上面进行开发,为了协同开发,小刘和小张也分别建立自己的分支进行开发,他们开发完成后会合并到dev上面去,在合并这一过程中可以进行代码的review,你经过检查没问题后,同意合并到dev分支上去,然后会有一个release分支,这个分支进行测试,也就是预上线阶段,在这个阶段进行测试,发现bug则修改bug,最后合并到master分支。

image-20221217164825341

第一步:

创建项目仓库,按照之前讲的那样创建仓库也可以,我们还需要做一件事:邀请开发的成员

1、

image-20221217170214789

2、

image-20221217170248832

点击邀请用户,可以通过三种方式邀请即可:

image-20221217170329869

但是在公司里我们一般不这样做,公司里面我们首先是创建一个组织,然后再在组织里面创建仓库:

1、

image-20221217170500067

2、

image-20221217170638553

3、新建仓库

image-20221217170701522

新建好仓库后,在本地进行开发,开发完成后并提交代码:

git init
touch app.py//新建文件进行开发
git add .
git commit -m '娱乐系统基本功能'
git remote add origin https://gitee.com/boys_2/amusement.git//和远端建立联系
git push -u origin "master"//push到远端

此时远端就有了master分支的V1版本

image-20221217194857449

一般公司会基于tag来进行版本管理,tag:

git tag -a v1 -m "第一版"

表示在git本地创建了一个tag,tag打在了本次提交上去:

image-20221217195238273

这个tag现在只是在本地,我们接在推送到远端:

git push origin --tags

image-20221217195451384

这样项目的各个版本就很清晰了。

由此创建项目并打上标签就完成了。

接下来呢你给小刘和小张要分配工作了,他们也需要干活了,让小刘做斗地主功能,小张完成麻将的功能,首先你需要创建dev分支,这是你自己开发的分支,小刘和小张都需要从这个dev分支拉取代码

git checkout -b dev

创建并切换到dev分支

邀请组织成员:

1、

image-20221217214636930

2、

image-20221217214723801

将成员邀请进来后,比如你邀请了小张,你需要给发送项目的链接:

image-20221218165553042

此时小张拿到这个链接后可以将代码克隆下来进行开发:

git clone https://gitee.com/boys_2/amusement.git
cd amusement
git checkout dev//切换到dev分支,基于它创建自己的分支进行开发
git checkout -b xiaozhang//创建自己的开发分支
touch 斗地主.py//开发
三板斧:
git add .
git commit -m "斗地主功能开发"
git push origin xiaozhang//push到远端小张分支

代码review以及merge,发起PR:

image-20221218171900964

xiaozhang分支合并到dev,填写这次合并的一些信息,一般写明自己这次版本所更新的功能,发起PR,我们看到还有代码review,即上图中的审查。

此时你这边就会收到PR请求,你就需要对小张的代码进行review:

image-20221218172449480

你可以对小张的代码进行评论审查,通过后点击审查通过即可。完成后合并分支即可:

image-20221218172543744

现在远端是最新的了,但是你本地还是之前的功能,并没有小张开发的斗地主功能,所以你可以再把dev分支的代码拉下来更新一下版本:

git pull origin dev

测试:

git checkout -b release

创建release分支进行测试,测试完成后如果有问题则在release分支上进行修改,没问题后可以合并到master分支,合并到master分支后,更新本地master分支

git pull origin master

此时就形成了第二版,我们可以再打一个第二版的标签:

git tag -a v2 -m "第二版,上线斗地主功能"
git push origin --tags

此时就可以看到每一个版本了:

image-20221218175526047

测试一般是怎么做的呢?测试一般有测试团队做或者项目负责人进行。

在代码的merge时可能会产生冲突,产生冲突后可以手动修改解决冲突即可。

如何给开源软件贡献代码?

  1. fork源代码

将别人源代码拷贝到我自己的远程仓库。

  1. 在自己仓库进行修改代码

可以clone到本地修改bug

  1. 给源代码的作者提交修复bug的申请,其实就是pull request。

git的三个配置文件

  • 项目配置文件:当前项目/.git/config
git config --local user.name 'Coderzzzz'
git config --local user.email 'Coder@xx.com'

只在当前项目有效

  • 全局配置文件:~/.gitconfig
git config --global user.name 'Coderzzzz'
git config --global user.email 'Coder@xx.com'

全局有效,本地项目全部都有效

  • 系统配置文件:/etc/.gitconfig
git config --system user.name 'Coderzzzz'
git config --system user.email 'Coder@xx.com'

注意:需要有root权限

git免密码登录

  • URL中体现
原来的地址:https://gitee.com/boys_2/amusement.git
修改的地址:https://用户名:密码@gitee.com/boys_2/amusement.git

git remote add origin https://用户名:密码@gitee.com/boys_2/amusement.git
此时再去push就不需要密码了
  • SSH实现
1.在本地生成公钥和私钥(默认放在~/.ssh,文件名id_rsa.pub为公钥,id_rsa为私钥):ssh-keygen
2.拷贝公钥的内容,并设置到gitee中
3.在git本地中配置ssh地址:
git remote add origin git@gitee.com:boys_2/amusement.git
  • git自动管理凭证

window+r,输入control 打开控制面板
然后点用户账号凭证管理器、window凭证,可以在下面看到普通凭据:

image-20221219000210757

删除了后下次push就需要密码了。

gitignore忽略文件

让git不再管理当前目录下的某些文件

当我们创建两个文件查看当前目录状态时git会自动检测到工作区的文件变化:

image-20221219135145071

要是我们不想要git管理这些文件呢?

可以写一个.gitignore文件,比如不想管理a.h文件,就在.gitignore文件写a.h文件:

image-20221219135556314

可以看到a.h文件已经不在管理了。如果不想管理b.h以及.gitignore文件,就在.gitignore文件里编写如下:

image-20221219140202494

可以看到已经忽略:

image-20221219140423598

.gitignore文件的编写规则:

a.h//不管理a.h
*.h//不管理所有以.h结尾的文件
files/   //不管理files目录下的文件
!b.h //不忽略b.h
*.py[c|a|d] //不管理以.pyc .pya .pyd为结尾的文件

更多可以参考:Gitee 搜索 - Gitee.com

.gitignore文件功能可以让一些不能上传的文件忽略掉。

github做任务管理

  • issues

文档以及任务管理

  • wiki

项目的文档说明

image-20221219145016497

可以在issues上面提一些问题,这些问题可以是bug也可以是一些项目上的疑问,可以指定人回答以及给定问题的标签,而wiki是对项目的一些介绍,比如项目是干什么的,怎么运行,项目有哪几部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我国盆栽蔬菜行业发展势头向好 未来市场需求将保持持续攀升态势

盆栽蔬菜是指在花盆或其他容器内种植的蔬菜,供人观赏和采摘食用。盆栽蔬菜分为观果类蔬菜、彩色蔬菜、绿叶保健蔬菜、根茎类蔬菜等几类。其中观果类蔬菜包括彩色甜椒、矮生番茄、樱桃番茄、硬果番茄、观赏茄子、小型辣椒、袖珍西瓜及各种南瓜、甜瓜、西葫芦、黄秋葵…

Python 为什么如此设计?

大概两年半前,我萌生了要创作一个新的系列文章的想法,也就是“Python为什么”,试图对 Python 的语法及特性提出“为什么”式的问题,以此加深对它的理解,探寻使用技巧、发展演变、设计哲学等话题。 一直以来&#xff0…

智芯传感微差压气体压力传感器成功入围第三届“SIA感知领航优秀项目征集”年度杰出产品及技术成长型企业组

近日,由中国传感器与物联网产业联盟开展的第三届“SIA感知领航优秀项目征集”结果正式出炉,北京智芯传感科技有限公司(以下简称“智芯传感”)作为国内领先的MEMS传感器厂商,凭借旗下产品“微差压气体压力传感器”的卓越…

uniapp的生命周期

目录 一、应用生命周期 只能在 App.vue 里执行 1、onLaunch 2、onShow 3、onHide 二、页面生命周期 1、onLoad 监听页面加载 2、onReady 3、onShow 监听页面显示 4、onHide 监听页面隐藏 5、onUnload 监听页面卸载 三、组件生命周期 1、beforeCreate 2、…

Java培训Mycat安装启动

一、 安装启动 1、安装解压 解压缩文件拷贝到linux下 /usr/local/ 2、配置文件介绍 schema.xml 定义逻辑库&#xff0c;表、分片节点等内容 rule.xml 定义分片规则 server.xml 定义用户以及系统相关变量&#xff0c;如端口等 3、 配置文件修改 <?xml version”1.0…

MFC中窗口隐藏后再显示,子窗口没刷新(WS_CLIPCHILDREN,WS_CLIPSIBLINGS)

问题描述 非模态对话框下&#xff0c;显示了子窗口&#xff0c;但窗口隐藏后&#xff0c;再通过任务栏显示出来时&#xff0c;子窗口内容就不显示了。 正确的显示如下&#xff1a; 显示异常的情况 - 原因分析 显示父窗口时&#xff0c;父窗口会进行重绘&#xff08;我的理…

什么是数字化?企业该如何做数字化?

现在大家都在说数字化&#xff0c;数字化到底是什么&#xff1f; 数字化不是万能&#xff0c;只能赋能&#xff0c;数字化转型也不是口号&#xff0c;而是需要在具体规划和业务发展中深入思考和切实贯彻。 如今数字化俨然成为炙手可热的一个高频词汇&#xff0c;不论个人还是…

MySQL#2(数据模型,SQL通用语法,SQL分类)

目录 一.数据模型 二.SQL通用语法 三.SQL的分类 1.DDL DDL---操作数据库 DDL---操作表 2.DML DML---操作数据 3.DQL(重点) 基础查询 条件查询 排序查询 分组查询 分页查询 扩展: 聚合函数 一.数据模型 数据库在内存中是以文件夹的方式存在 数据表和数据是以文件的形式存…

有利润表模板的BI软件有哪些?

要分析利润&#xff0c;就需要制作利润表。有哪些可套用利润表模板的BI软件&#xff1f;关于这个问题&#xff0c;找奥威BI软件就对了。奥威BI软件有一套标准化的数据分析方案&#xff0c;内设数十张数据可视化分析报表模板&#xff0c;其中就包括了利润表模板&#xff0c;下载…

KNN算法预测哪些用户会购买这种全新SUV。并且在最后一列用来表示用户是否购买 项目实战代码+数据

K近邻算法通过计算被分类对象与训练集对象之间的距离,确定其k个临近点,然后使用这k个临近点中最多的分类作为分类结果。 如上图,当K=3时,它会被分类为 Class B。因为K=3时,3个临近点里有2个是B类的。 同理,K=7时它会被分类为 Class A,因为K=7时,7个临近点里4个是A类的…

C. The Third Problem(MEX,思维,组合数)[Codeforces Round #804 (Div. 2)]

题面如下&#xff1a; 思路or题解 因为是MEXMEXMEX问题&#xff0c;我们可以通过维护每一个数的 [l,r][l, r][l,r] 来进行求解 如果 kkk 维护的范围是 [l,r][l, r][l,r] 那么我们在计算 k1k 1k1 的时候可以发现&#xff1a; 在[l1,r−1][l 1, r - 1][l1,r−1] 如果 k1k 1k1…

CS61A 2022 fall lab0

CS61A 2022 fall lab0:Getting Started 不得不感叹实验网站是真的高级… 我打算用ubuntu做实验 文章目录CS61A 2022 fall lab0:Getting StartedIntroductionSetup1.Install a terminal2.Install Python 3Python3.7基于update-alternatives的Python默认版本系统级修改&#xff1…

在设备树中pinctrl的简单使用

目录 1 关于引脚的几个概念 2 设备树中pinctrl节点 2.1 定义各种pin bank 2.2 定义各种group 3 设备节点中要使用某一个 pin group 4 platform_device, platform_driver匹配 5 驱动中想选择、设置某个状态的引脚 6 总结 7 参考文档 1 关于引脚的几个概念 Bank: 以引脚…

NKOJ-P1327【NOIP 2011 DAY2-1】计算系数

希望这篇文章可以带我突破10000访问………… 题目描述 给定一个多项式 (axby)k(axby)^k(axby)k&#xff0c;请求出多项式展开后xnymx^ny^mxnym项的系数; 共一行&#xff0c;包含5 个整数&#xff0c;分别为a,b,k,n,ma,b,k,n,ma,b,k,n,m&#xff0c;每两个整数之间用一个空格隔…

趣谈网络协议-课程介绍

技能收获 掌握网络协议的知识框架&#xff1b;应对大厂面试的协议难题&#xff1b;驾驭网络协议的实用场景。 讲师介绍 刘超&#xff0c;前网易研究院云计算技术部首席架构师&#xff0c;15 年云计算领域研发及架构经验。曾在 EMC 做过类似 GFS 的分布式存储开发&#xff0c;…

【遥感科学】第三章 遥感成像原理

第三章 遥感成像原理与遥感图像特征 一、遥感平台 遥感平台是搭载传感器的工具&#xff0c;按照位置可以分为地面、航空航天航宇&#xff0c;按照作用可分为气象、陆地、海洋等。这里我们主要按照作用领域进行讨论 1.1 气象卫星 气象卫星发展的三个阶段&#xff1a; 20世纪6…

【MySQL】-索引以及树的常用数据结构分析

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【MySQL】 分享&#xff1a;纵一苇之所如&#xff0c;凌万顷之茫然。——《赤壁赋》 主要内容&#xff1a;MySQL中索引的介绍、创建索引、使用索引&#xff1b;索引背后的数据结构…

计算存储分离在京东云消息中间件JCQ上的应用

作者&#xff1a;田寄远 JCQ 全名 JD Cloud Message Queue&#xff0c;是京东云自研、具有 CloudNative 特性的分布式消息中间件。 JCQ 设计初衷即为适应云特性的消息中间件&#xff1b;具有高可用、数据可靠性、副本物理隔离、服务自治、健康状态汇报、少运维或无运维、容器部…

LeetCode代码随想录算法训练营第十一天-C++队列的应用

_11LeetCode代码随想录算法训练营第十一天-C队列的应用 239.滑动窗口最大值347.前K个高频元素 239.滑动窗口最大值 整体思路 要实现一个单调递减队列&#xff1a; 对于滑动窗口的滑动&#xff0c;移除前面的元素&#xff0c;加入后面的元素。当移除前面的元素时&#xff0…

彻底弄清SpringSecurity登录原理及开发步骤

SpringBootVue之SpringSecurity登录与授权(一) 工具&#xff1a;idea2018&#xff0c;springboot 2.1.4&#xff0c;springsecurity 5.1.5 简介 SpringSecurity是Spring下的一个安全框架&#xff0c;与shiro 类似&#xff0c;一般用于用户认证(Authentication)和用户授权(Autho…