咸阳做网站公司/个人如何在百度做广告

咸阳做网站公司,个人如何在百度做广告,西藏自治区住房和城乡建设部网站,杭州手机网站制作公司哪家好目录 多人协作一 准备工作 开发者1准备工作 开发者2准备工作 协作开发 将内容合并进master 多人协作二 开发者1进行工作 开发者2进行工作 特殊场景 将内容合并进master 之前所学习的Git操作,是为了多人协作开发做铺垫的,因为在公司中&#xf…

目录

多人协作一

准备工作

开发者1准备工作

开发者2准备工作

协作开发

将内容合并进master

多人协作二

开发者1进行工作

开发者2进行工作

特殊场景

将内容合并进master


之前所学习的Git操作,是为了多人协作开发做铺垫的,因为在公司中,一个项目肯定是很多开发人员一起开发的,下面就详细讲述多人协作开发相关知识

多人协作一

首先我们制定一个多人协作的工作目标:远程master分支下file.txt文件新增代码"aaa"、"bbb"

目前远程master分支下的 file.txt 文件的代码只有两行:

实现要求:由开发者1新增"aaa",由开发者2新增"bbb"

条件:两个开发者在一个分支(自己创建的分支)下协作完成

我们模拟两个开发者时:
在我们自己的云服务器上开发,当做是第一个开发者
另一名开发者我们可以在Windows系统下,把仓库克隆下来,当做第二个开发者


准备工作

因为是需要两个开发者在同一个分支下协作完成, 所以首先需要自己创建一个分支,我们既可以在本地创建也可以在远程仓库gitee上创建,下面首先演示在gitee上创建:

点击分支:

点击新建分支:

命名为dev:

此时就会显示创建出的dev分支:


开发者1准备工作

首先在云服务器上进行开发者1的准备工作:

此时远程仓库的分支如下:

本地有一个本地master分支,还有一个远程的master分支:

因为在远程创建了dev分支后,本地看不到这个dev分支,所以需要 pull 拉取操作:
master和master分支会自动建立连接,所以直接直接 git pull 即可

此时本地的分支状态如下所示:


开发者2准备工作

再在Windows系统下进行开发者2的准备工作:

创建一个文件夹,将这个 remote-gitcode 仓库克隆到本地:

此时开发者2的分支状态就是:

整体的状态如下:

此时开发1和开发者2的准备工作就完成了


协作开发

下面的任务就是让开发者1在dev分支下新增 aaa 代码,开发者2也在dev分支下新增 bbb 代码

首先在云服务上,查看分支的情况:

  • 对于本地来说只有一个 master 主分支
  • 对于远程来说,有 master 和 dev 两个分支

我们之前跟大家交代过了,对于所有本地的修改,必须在本地分支上进行操作,再通过 git push 的操作,将本地的提交推送至远程的某一个分支下

我们不能直接切到远程的某一个分支下进行修改,因为如果直接这样修改,远程仓库的代码直接被改变,那么 push、pull 操作还有什么意义呢,所以 git 是不支持去切换到远程的某一个分支下进行开发的

而此时我们本地是没有 dev 分支的,所以我们可以创建一个本地分支出来,下面执行:
git checkout -b dev origin/dev

上述命令的意义是:

  • 在本地创建一个 dev 分支,并切换到本地的 dev 分支上
  • 将本地的 dev 分支和远程的 dev 链接起来

我们想要查看建立的连接,可以执行 git branch -vv

之所以要这样建立连接,意义就是:
在我们后徐操作中,想要执行 git push / git pull 这些命令时,就可以直接执行 git push / git pull,不需要在后面跟上非常长的后缀来建立连接了


下面就可以在本地的 dev 分支上对 file.txt 文件进行修改了,添加上 aaa:

修改完成后,执行 add、commit 命令,再调用 git status 查看状态,提示我们接下来需要执行 git push 操作推送到远程仓库中去:

由于上面已经将本地的 dev 分支和远程的 dev 分支建立好连接了,所以直接执行 git push 即可:

此时就推送到远程了,接下来观察远程仓库的 dev分支下的 file.txt 文件是否发生了改变:

开发者1的工作就完成一大半了,此时远程仓库的 dev 分支的 file.txt 文件中也有了 aaa 内容


下面是开发者2进行操作,在刚刚克隆仓库的位置,打开 git bash here,进行命令行式的操作,查看当前的分支:

下面在 Windows 系统下也创建一个 dev 分支,一般建议与远程仓库的 dev 分支进行连接,但是上面已经演示了连接的情况,所以在开发者2这里就演示不连接的情况
直接执行 git checkout -b dev

此时查看连接情况,发现确实本地的 dev 分支并没有与远程仓库的 dev 分支建立连接:

此时因为我们没有连接,如果直接执行 git pull 命令的话,就会报错,并提示我们需要执行下面框出来的操作才能正确的 pull:

所以我们就将这个复制下来,将 <branch> 修改为 dev 即可:

此时再执行 git branch -vv 查看连接情况,就可以发现本地的 dev 分支与远程的 dev 分支建立了连接:


由于开发者2在克隆的时候,远程仓库的 file.txt 文件中只有前两行代码,还没有开发者1新增的 aaa 内容,这是正常的,开发者2的工作内容就是新增自己的 bbb 即可,所以直接打开 file.txt,新增 bbb:

保存退出后,执行 add、commit、push 操作,但是却有下面的报错:

报错信息告诉我们:远程拒绝了我们的推送操作,是当前的分支和远程的分支是有一定差异的,差异的原因是远程仓库的 dev 分支是有 aaa 的,而本地仓库的 dev 分支下是有 bbb 内容的,都是在 file.txt 文件中存在的,此时它们是有一个冲突的

如果git允许推送,那么 aaa 和 bbb 都是在 file.txt 的第三行的内容,git并不清楚我们是需要 aaa 还是需要 bbb,所以git就直接拒绝推送请求,我们需要人工手动的解决这个冲突

上面的黄色字体也告诉我们解决方法就是:先执行 git pull 将远程仓库的 dev 分支的内容拉取到本地来,我们进行完冲突解决后,再推送至远程即可:

此时 file.txt 文件如下:

我们手动将内容改为我们想要的即可:

修改完后,再执行 add、commit、push 三板斧,就能够推送成功了:

下面打开远程仓库 dev 分支下的的 file.txt 文件,就有了 aaa 和 bbb 的代码:

此时就做到了开发者1和开发者2在远程的 dev 分支上做到了新增的代码,下面完成最后一步,在 master 分支上也新增这两行代码,也就是将 dev 合并到 master 分支上


将内容合并进master

远程仓库的 dev 分支上多了 aaa 和 bbb,但是 master 分支上并没有多这两行代码

原因就是 master 分支没有进行 merge 操作,没有将 dev 分支的内容 merge 进 master 分支下

接下来有两种方式可以合并:

  • 提出一个 pull request 合并申请单,管理员同意后,就可以进行 merge 操作了(这里的 pull request 在前面有提到过)
  • 让本地的 master 分支 merge dev 分支,再将本地的 master 分支 push 推送到远程仓库中

方式一:PR申请单

 pull request 操作如下, 点击新建:

源分支选择 dev 分支,目标分支选择 master 分支,再添加相关的信息,点击创建就可以完成:

这种方式中的审查员,实际上在公司中对应的是老板或项目经理,是为程序员缩写的代码提供保障性的


方式二:本地合并再推送

我们上面的开发者1和开发者2都完成了自己的任务,以开发者1为例,开发者1并没有开发者2新增的 bbb 代码,所以开发者1需要先 pull 远程的 dev 分支,保证代码的完整性

开发者1此时的 file.txt 文件内容为:

执行 git pull 操作后:

此时对于开发者1来说 dev 分支上就有了 aaa 和 bbb 了


在之前提到过,如果直接使用 master 分支合并 dev 分支,可能会发送冲突,而 master 分支是比较重要的,不应该出现这些问题

所以我们的策略就变为:使用 dev 分支去合并 master 分支,如果有冲突的话就在本地的 dev 分支下解决,不会影响 master 分支,如果没有冲突再让 master 分支合并 dev 分支即可

在 dev 分支合并 master 前,需要保证此时本地的 master 分支是最新的,因为远程的 master 分支有可能会添加新的内容,所以第一步是本地的 master 分支执行 pull 操作,保证本地的 master 分支与远程的 master 分支的内容是一样

master 分支执行 pull 操作

dev merge master

此时 dev 分支合并 master 分支后并没有冲突问题,所以就可以 master 分支上合并 dev 分支

此时本地仓库的 master 分支的 file.txt 文件为:

本地 master 推送到 远程仓库的 master:

此时远程仓库中 master 分支下的 file.txt 文件,就有了 aaa 和 bbb 内容了:


到此为止,就完成了我们的目标,此时我们创建的 dev 分支就没有任何用处了,就可以进行删除操作了

点击管理:

点击右边的删除图标:

此时就只剩下 master 分支了:


总结一下,在同一分支下进行多人协作的工作模式通常是这样:

  • 首先,可以试图用 git push origin branch-name 推送自己的修改
  • 如果推送失败,则因为远程分支比你的本地更新,需要先用 git pull 试图合并
  • 如果合并有冲突,则解决冲突,并在本地提交
  • 没有冲突或者解决掉冲突后,再用 git push origin branch-name推送就能成功
  • 功能开发完毕,将分支 merge 进 master,最后删除分支

因为上述的第三点,合并有冲突需要解决冲突,而解决冲突是较为麻烦的,所以在同一分支下多人协作是不常见的, 所以接下来所讲的多人协作二,是在不同分支下的多人协作的场景


多人协作二

首先我们制定一个多人协作的工作目标:远程 master 分支下新增 function1 和 function2 文件

实现要求:由开发者1新增 unction1 ,由开发者2新增 function2

条件:两个开发者在不同分支下协作完成(各自让某一个功能私有某一个分支)

我们目前关注的仓库如下:

下面就需要创建分支完成任务了,有两种方式:

  • 远程创建分支
  • 本地创建分支,先 pull,再 push 到远程

推荐第一种,因为远程创建分支是直接基于远程的 master 分支进行创建,可以保证是最新的代码,而本地创建分支并不能保证是最新的代码


开发者1进行工作

首先在开发者1这里,创建一个 feature-1 分支,并切换到 feature-1 分支:

在这个分支中创建 function1 文件:

接着执行 add、commit 操作:

由于本地和远程没有建立链接,所以还不能进行 push 操作,但是我们可以直接将 feature-1 分支直接推送到远端:

git push origin feature-1

此时观察分支情况,本地和远端都有了 feature-1 分支:

在 gitee 上也能看到新增的 feature-1 分支:

feature-1 分支中的 function 文件也有了新增的代码:

所以此时的图示就变为了:


开发者2进行工作

查看 Windows 下开发者2的分支情况:

此时处于 dev 分支,我们切换到 master 分支上:

此时的 master 分支不是最新的,因为在上面的 多人协作一 中,我们已经给 file.txt 文件中新增了 aaa 和 bbb,而开发者2的 file.txt 的内容并没有更新:

所以首先需要 pull,拉取最新的代码:


此时就可以新建一个 feature-2 分支:

由于是在 Windows 下,所以直接右键创建一个 function2 文件即可:

此时与开发者1一样,先 add、commit:

再直接将 feature-2 分支推送到远端: git push origin feature-2

此时 gitee 上就有三个分支了:

此时的 feature-2 分支下的 function2 文件内容也推送上来了:

我们发现不同的开发者在各自的分支中开发,最终推送到远端,是没有冲突的,直到最后合并时才可能会有冲突

相比于多人在同一分支开发来说,多人在不同分支下开发是非常方便的 

此时的图示变为:


特殊场景

正常情况下,两个开发者就可以在自己的分支上进行专业的开发了

但是天有不测风云,你的小伙伴突然生病了,但需求还没开发完,需要你帮他继续开发,于是他便把 feature-2 分支名告诉你了,这时你就需要在自己的机器上切换到 feature-2 分支帮忙继续开发,所以下面需要开发者1帮助开发者2完成

也就是开发者1需要切换到 feature-2 分支下进行开发

开发者1的分支情况如下,看不到远程的 feature-2 分支:

所以第一步是使用 pull 拉取远程的 feature-2 分支:

git pull 的两种场景:

  • 拉取分支内的内容 (需要关联远程仓库的分支)
  • 拉取仓库的内容

拉取到远程的 feature-2 分支后,我们在本地也创建 feature-2 分支,并关联到远程的 feature-2 分支:git checkout -b feature-2 origin/feature-2

下面就 vim 打开 function2 文件,继续开发:

此时就可以进行 add、commit、push 三板斧了,因为刚刚建立好链接了,所以可以直接 push:

此时远程仓库 gitee 上,feature-2 分支上的 function2 文件内容也更新了:


到这时,开发者2的病好了,开发者2就继续在 Windows 下开发,此时开发者2并看不到开发者1帮忙写的代码:

所以此时开发者2就需要进行 pull 拉取操作,将远程仓库的 feature-2 分支的内容同步到本地分支上,但是此时直接 pull 是会失败的,因为 开发者2 并没有与远程仓库的 feature-2 分支建立连接

所以下面先建立连接,再 pull:

查看 function2 文件,拉取成功:


开发者2 再加上最后一行内容:

继续执行 add、commit、push:

远程仓库 gitee 也同步了更新的代码:


将内容合并进master

开发者1和开发者2的工作已经完成了,最后一件事就是将 feature-1 分支和 feature-2 分支合并进 master 主分支中

这次的合并,我们可以选择发起 pull request 申请单的方式合并,并点击创建 pull request:

假设作为审查人员的我们,打开 pull request,往下翻,点开文件,就能看到源分支和目标分支的差异:

如果代码没有问题,我们就点击已阅,通过,点击提交:

接着点击合并分支:

点击接收 pull request:

此时 pull request 上方,就会显示已合并:

此时 master 分支就有了 function2.txt 文件了:

 

也就是下面的流程:


feature-2 分支已经合并完成了,现在还剩下 feature-1 分支,有一些细节需要注意,下面详细说明

目前的合并流程为:

期望的操作是:

但是在 feature-1 合并进 master 主分支时,可能是有冲突的,所以如果有冲突的话是需要解决冲突的,这里就又回到了我们之前说到的解决冲突的方法

我们不能直接用 master 分支合并 feature-1 分支,这里有可能将 master 分支在解决冲突的过程中解决坏了,所以方法就是:先让 feature-1 分支去合并 master 分支,合并完冲突后,再让 master 分支合并 feature-1 分支,此时就不会有什么问题了

所以图示为:


下面实操一下上述的两步

feature-1 分支 merge master 分支

首先切到本地的 master 分支,pull 一下代码,不论本地当前是不是最新的代码,这都是一个好习惯:

再切换到 feature-1 分支上,让 feature-1 分支 merge master 分支:git merge master
此时出现下面的页面,表示 merge 的时候没有出现任何冲突,按下 Ctrl + x 退出即可:

此时本地合并完后,执行 push 推送到远程仓库:

下面 feature-1 分支合并完 master 分支后,没有任何冲突,此时就可以按照前面 master 分支合并 feature-2 分支的方式合并

也就是提交 pull request,审核人员审核通过即可:

接着已阅、通过、提交:

 再点击接受 pull request

此时 master 分支上,关于开发者1和开发者2的代码就全部合并上了:

最后再删除 feature-1 分支和 feature-2 分支即可


git branch -a 打印已被删除的远程分支

我们在远程仓库中已经删除了 feature-1 和 feature-2 分支了,远程仓库只剩 master 分支了:

但是 git branch -a 仍然会打印已被删除的远程分支

我们可以执行:git remote show origin,用于展示远程分支的情况:

在我们已经删除的 dev、feature-1、feature-2 分支后显示是 stale 状态,也就是陈旧的状态,推荐我们执行 git remote prune origin,即可移除执行 git branch -a 时已经在远程删除的这几个分支
此时再次执行 git branch -a 时,就不会显示远程已经删除的分支了

如果想删除本地的 dev 分支,执行 git branch -d dev 即可:


Git:多人协作到此结束

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

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

相关文章

登录次数限制

文章目录 一、应用场景与设计目的1. 应用场景2. 设计目的 二、功能设计1. 登录限制规则2. 解锁机制3. 适用维度 三、技术实现1. 数据存储2. 逻辑流程3. 实现代码示例4. 动态锁定时间 四、安全增强与扩展1. 防止用户名枚举2. 加入验证码3. 监控与报警4. 分布式支持 五、设计思考…

计算机毕业设计SpringBoot+Vue.js景区民宿预约系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

(十 五)趣学设计模式 之 命令模式!

目录 一、 啥是命令模式&#xff1f;二、 为什么要用命令模式&#xff1f;三、 策略模式的实现方式四、 命令模式的优缺点五、 命令模式的应用场景六、 总结 &#x1f31f;我的其他文章也讲解的比较有趣&#x1f601;&#xff0c;如果喜欢博主的讲解方式&#xff0c;可以多多支…

17、什么是智能指针,C++有哪几种智能指针【高频】

智能指针其实不是指针&#xff0c;而是一个&#xff08;模板&#xff09;类&#xff0c;用来存储指向某块资源的指针&#xff0c;并自动释放这块资源&#xff0c;从而解决内存泄漏问题。主要有以下四种&#xff1a; auto_ptr 它的思想就是当当一个指针对象赋值给另一个指针对…

CAN总线通信协议学习2——数据链路层之帧格式

1 帧格式 帧格式可理解为定义了传输的数据&#xff08;叫报文&#xff09;应该“长什么样”来传输&#xff0c;也为后续设定一些规则如错误检查机制提供了思路。 首先&#xff0c;帧格式可分为以下5种类型&#xff1a; PS&#xff1a;CAN总线任意一个设备可当收也可当发&#…

1×1卷积的作用与原理详解

11卷积的作用与原理详解 文章目录 11卷积的作用与原理详解引言1. 什么是11卷积&#xff1f;2. 11卷积的数学表达3. 11卷积的主要作用3.1 改变通道数&#xff08;升维/降维&#xff09;3.1.1 降维&#xff08;Dimension Reduction&#xff09;3.1.2 升维&#xff08;Dimension I…

网络配置的基本信息

目录 一、网络接口信息 1、关闭虚拟化服务 2、配置临时IP 3、配置静态IP 4、常见网络命令 5、安装Wireshark 一、网络接口信息 输入 ip address&#xff0c;会出现下面的内容 网卡名称及其含义&#xff1a; 网卡名称说明lo 表示本地回环地址。 ens32 有线网卡&#xff0c…

dify绑定飞书多维表格

dify 绑定飞书和绑定 notion 有差不多的过程&#xff0c;都需要套一层应用的壳子&#xff0c;而没有直接可以访问飞书文档的 API。本文记录如何在dify工具中使用新增多条记录工具。 创建飞书应用 在飞书开放平台创建一个应用&#xff0c;个人用户创建企业自建应用。 自定义应…

《HelloGitHub》第 107 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 Python、…

【每日一题 | 2025】2.24 ~ 3.2

个人主页&#xff1a;Guiat 归属专栏&#xff1a;每日一题 文章目录 1. 【2.24】P10424 [蓝桥杯 2024 省 B] 好数2. 【2.25】P8665 [蓝桥杯 2018 省 A] 航班时间3. 【2.26】P10905 [蓝桥杯 2024 省 C] 回文字符串4. 【2.27】P10425 [蓝桥杯 2024 省 B] R 格式5. 【2.28】P10426…

跟着官方文档学习UE C++ TArray容器系列 迭代 和 排序

一.首先测试下&#xff0c;官方案例 迭代器的方法&#xff0c;有点不常见。有点像个指针&#xff0c;迭代完还自带break. oid AWXTArrayActor::WXLoopArray() {FString JoinedStr1;FString JoinedStr2;TArray<FString> StrArr { "Hello","Baby",&q…

Qt 对象树详解:从原理到运用

1. 什么是对象树&#xff1f; 对象树是一种基于父子关系的对象管理机制。在 Qt 中&#xff0c;所有继承自 QObject 的类都可以参与到对象树中。 当一个对象被设置为另一个对象的父对象时&#xff0c;子对象会被添加到父对象的内部列表中&#xff0c;形成一种树状结构。 Qt 提…

JavaAPI(网络编程)

网络通信协议 通信协议 ‌所谓通信协议&#xff0c;是指通信双方在进行数据交换时必须遵守的规则和约定。‌这些规则确保了双方能够有效地进行通信&#xff0c;实现信息的交换和资源共享。通信协议定义了传输时的数据格式、控制信息以及传输顺序和速度等&#xff0c;确保双方…

Java---入门基础篇(下)---方法与数组

前言 本篇文章主要讲解有关方法与数组的知识点 ,是基础篇的一部分 , 而在下一篇文章我会讲解类和对象的知识点 入门基础篇上的链接给大家放在下面啦 ! Java---入门基础篇(上)-CSDN博客 感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb; 欢迎各位大佬指点…

Python 爬虫 – BeautifulSoup

Python 爬虫&#xff08;Web Scraping&#xff09;是指通过编写 Python 程序从互联网上自动提取信息的过程。 爬虫的基本流程通常包括发送 HTTP 请求获取网页内容、解析网页并提取数据&#xff0c;然后存储数据。 Python 的丰富生态使其成为开发爬虫的热门语言&#xff0c;特…

图像分类项目1:基于卷积神经网络的动物图像分类

一、选题背景及动机 在现代社会中&#xff0c;图像分类是计算机视觉领域的一个重要任务。动物图像分类具有广泛的应用&#xff0c;例如生态学研究、动物保护、农业监测等。通过对动物图像进行自动分类&#xff0c;可以帮助人们更好地了解动物种类、数量和分布情况&#xff0c;…

PHP:IDEA开发工具配置XDebug,断点调试

文章目录 一、php.ini配置二、IDEA配置 一、php.ini配置 [xdebug] zend_extension"F:\wamp64\bin\php\php7.4.0\ext\php_xdebug-2.8.0-7.4-vc15-x86_64.dll" xdebug.remote_enable on xdebug.remote_host 127.0.0.1 xdebug.remote_port 9001 xdebug.idekey"…

【Java】使用jdk自带的zip压缩实现任意文件压缩打包下载功能(复制即用)

前言 在实际项目中&#xff0c;我们可能会接到将文件或者资料打包压缩导出的需求&#xff0c;例如将系统中某些生成的文件一起打包压缩下载提供给客户使用&#xff0c;今天提供一个jdk自带的工具类快速实现打包压缩的功能&#xff0c;方法我已经封装好&#xff0c;大家如果在项…

腾讯云扩容记录

腾讯云扩容&#xff1a; sudo yum install -y cloud-utils-growpart 安装扩容工具 sudo file -s /dev/vda1 有数据 sudo LC_ALLen_US.UTF-8 growpart /dev/vda 1 sudo resize2fs /dev/vda1 df -Th 完毕 以下是对执行的命令的详细解释以及背后的原理&#xff1a; 1. 安装 cloud…

服务流程设计和服务或端口重定向及其websocket等应用示例

服务流程设计和服务或端口重定向及其websocket等应用示例 目录 服务或端口重定向的服务设计和websocket等应用示例 一、通用请求控制流程 1.1、入口 1.2、所有GET请求首先预检控制单元 1.3、http请求会分别自动307重定向 1.4、所有请求首先执行跨源控制单元 1.5、然后…