【开发工具】Git模拟多人开发场景理解分支管理和远程仓库操作
我们来模拟一个多人多分支的开发场景。假设你有一个新的空白远程仓库,假设地址是
https://github.com/user/repo.git。
- 克隆远程仓库到本地
$ git clone https://github.com/user/repo.git
这会在本地创建一个 repo 目录,并自动设置远程主机为 origin。
- 创建本地开发分支并推送到远程
# 创建并切换到新分支 feature/login
$ git checkout -b feature/login# 创建一个新文件,模拟开发
$ echo "Implement login functionality" > login.txt
$ git add login.txt
$ git commit -m "Implement login"# 将新分支推送到远程
$ git push --set-upstream origin feature/login

[!Quote] push中的–set-upstream选项
--set-upstream选项用于将当前本地分支与远程同名分支建立关联关系。具体来说:
- 当你使用
git push时,Git会先查找当前本地分支是否已经关联远程分支- 如果关联存在,则直接推送到关联的远程分支
- 如果不存在关联关系,那么
git push会报错,需要手动指定远程分支--set-upstream选项就是在第一次推送当前本地分支时,帮助你自动建立与远程同名分支的关联关系git push --set-upstream origin feature/login这条命令做了两件事:
- 将本地
feature/login分支推送到远程origin上,创建一个新的远程feature/login分支- 同时建立本地
feature/login分支与远程origin/feature/login分支的关联关系以后再推送
feature/login分支的更新时,你只需要运行git push就可以了,Git会自动将本地分支推送到关联的远程分支。虽然
--set-upstream选项不是必需的,但能自动建立分支关联关系,避免每次都要手动指定远程分支,非常方便。所以通常在第一次推送新分支时都会使用这个选项。
- 在另一个本地分支进行其他开发
# 创建并切换到新分支 feature/signup
$ git checkout -b feature/signup# 创建文件,模拟另一个开发者的工作
$ echo "Add signup page" > signup.html
$ git add signup.html
$ git commit -m "Add signup page"# 将新分支推送到远程
$ git push --set-upstream origin feature/signup

- 切换回主分支,模拟合并请求
# 切换到主分支
$ git checkout master# 从远程获取所有分支更新
$ git fetch --all# 合并 feature/login 分支
$ git merge origin/feature/login# 解决潜在冲突(如果有)...# 提交合并后的代码
$ git push

- 在远程创建并推送新分支
在 GitHub 上,直接在线创建一个新的 bugfix 分支,添加一些提交。

- 本地获取远程 bugfix 分支
# 从远程获取所有更改
$ git fetch --all # 检查新的远程分支
$ git branch -r
origin/bugfix
origin/feature/login
origin/feature/signup
origin/master# 创建并切换到本地 bugfix 分支,跟踪远程分支
$ git checkout --track origin/bugfix


- 继续在本地多个分支之间切换,模拟团队合作开发…
以上是一个模拟多人多分支协作开发的基本流程。你可以在本地多个分支之间切换,模拟不同开发者的工作,并通过合并、推送、拉取等操作进行分支集成。同时也可以在远程创建新分支,模拟其他贡献者的工作。
总结fetch和pull:
git fetch和git pull是两个不同的命令,它们的主要区别在于获取远程数据的方式和合并的行为。git fetch:
- 从远程仓库获取数据,并将其存储到本地仓库中。
- 它不会自动合并或修改你当前的工作分支,这样你就可以在合并之前审查变更内容。
- 运行
git fetch后,你需要手动合并远程分支到你的本地工作分支。- 语法:
git fetch [remote-name]git pull:
- 这个命令实际上是
git fetch和git merge的组合操作。- 它从远程仓库获取最新数据,并尝试直接合并到你当前所在的本地分支。
- 如果合并没有冲突,它将自动完成这个过程。否则你需要手动解决冲突后再次提交。
- 语法:
git pull [remote-name] [branch-name]总的来说:
git fetch更安全一些,因为它允许你先审查远程变更内容,避免直接合并可能产生的冲突。git pull是直接合并远程变更到本地分支,操作更方便,但可能会遇到合并冲突的问题。因此,对于重要的项目分支,建议使用更保守的
git fetch,然后通过git diff查看变更内容后再决定是否合并。而对于一些小的个人项目分支,使用git pull可以省去手动合并的步骤。
相关文章:
【开发工具】Git模拟多人开发场景理解分支管理和远程仓库操作
我们来模拟一个多人多分支的开发场景。假设你有一个新的空白远程仓库,假设地址是 https://github.com/user/repo.git。 克隆远程仓库到本地 $ git clone https://github.com/user/repo.git这会在本地创建一个 repo 目录,并自动设置远程主机为 origin。 创建本地开发分支并推送…...
从零学习Linux操作系统 第三十一部分 ansible常用模块介绍
一、ansible运行模块的两种方式 Ad-Hoc方式 ##利用ansible命令直接完成管理,主要用于临时命令使用场景 playbook方式 ##ansible脚本,主要用于大型项目场景,需要前期的规划,相当于shell当中的脚本 二、如何查看模块帮助 ansible…...
【Linux C | 网络编程】多播的概念、多播地址、UDP实现广播的C语言例子
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...
HarmonyOS NEXT应用开发案例——滑动页面信息隐藏与组件位移效果
介绍 在很多应用中,向上滑动"我的"页面,页面顶部会有如下变化效果:一部分信息逐渐隐藏,另一部分信息逐渐显示,同时一些组件会进行缩放或者位置移动。向下滑动时则相反。 效果图预览 使用说明 向上滑动页面…...
ffmpeg 转码过程中参数含义
ffmpeg 转码过程中参数含义 frame 649 fps 73 q28.0 size 3072kB time00:00:25.88 bitrate 972.4kbits/ frame 694 fps 74 q28.0 size 3328kB time00:00:27.68 bitrate 984.9kbits/ frame 732 fps 74 q28.0 size 3584kB time00:00:29.20 bitrate1005.5kbits/ fram…...
探索c++——了解c++的魅力
前言:c是一门既面向对象又面向过程的语言。 不同于java纯粹的面向对象和c纯粹的面向过程。 造成c该特性的原因是c是由本贾尼大佬在c的基础上增添语法创建出来的一门新的语言。 它既兼容了c, 身具面向过程的特性。 又有本身的面向对象的特性。 面向对象和…...
Oracle常用语句语法
1 第一章Oracle命令 转载至 Oracle常用语句语法汇总 https://www.modb.pro/db/1759752946170548224 a) 系统管理员连接 conn */* as sysdba b) 查询当前用户 show user c) 创建新用户 create user 用户名 identified by 密码(密码不能以数字开头)。例如…...
时隔n年再度会看Vue,Git
时隔n年再度会看Vue,Git 曾经沧海难为水,除却巫山不是云。不知道这句话用在这里合不合适,好多东西在记忆中都淡化了。但是互联网确是有记忆的。研究以前项目的时候,翻看到gitee码云上托管的项目,就像是自己的孩子重新又回来了一样…...
SpringCloud-Zuul网关的使用
在SpringCloud中网关Zuul起什么作用? 在Spring Cloud中,Zuul 是一个边缘服务网关,起着以下作用:反向代理:Zuul 可以作为应用程序的反向代理服务器,接收客户端请求并将请求转发给相应的服务。这使得客户端可…...
mysql 中的一些重要函数
show create table user_profile 查看表结构 1.datediff(end_date,start_date)函数,now(), curdate() curtime() date_add(日期,interval num 时间) date_format(日期,格式) 4.select IFNULL(null,0); oracle 中nvl 函数 5.select IF(2 > 1, 2,0)ÿ…...
windows11配置电脑IP
windows11配置电脑IP 选择"开始>设置>“网络&Internet >以太网”。在 "属性"下,编辑IP地址,子网掩码,网关以及DNS。...
【JavaEE】_前端POST请求使用json向后端传参
目录 1. 关于json 2. 通过Maven仓库,将Jackson下载导入到项目中 3. 使用Jackson 3.1 关于readValue方法 3.2 关于Request.class类对象 3.3 关于request对象的属性类型 3.4 关于writeValueAsString 前端向后端传递参数通常有三种方法: 第一种&…...
大语言模型系列-GPT-2
文章目录 前言一、GPT-2做的改进二、GPT-2的表现总结 前言 《Language Models are Unsupervised Multitask Learners,2019》 前文提到,GPT-1利用不同的模型结构微调初步解决了多任务学习的问题,但是仍然是预训练微调的形式,GPT-…...
30m二级分类土地利用数据Arcgis预处理及获取
本篇以武汉市为例,主要介绍将土地利用数据转换成武汉市内各区土地利用详情的过程以及分区统计每个区内各地类面积情况,后面还有制作过程中遇到的面积制表后数据过小的解决方法以及一些相关的知识点: 示例数据下载链接:数据下载链…...
LeetCode-22题:括号生成(原创)
【题目描述】 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 【题目链接】. - 力扣(LeetCode) 【解题代码】 package dp;import java.util.ArrayList; import java.util.Arrays; im…...
如何应对IT服务交付中的问题?看了本文DevOps就懂了
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...
Ubuntu23.10禁用Wayland
禁用前 编辑custom.conf文件 sudo vim /etc/gdm3/custom.conf 去掉WaylandEnablefalse前的#号 保存退出 重启系统 生效: 成功转换为X11...
Sora: 大型视觉模型背景、技术、局限性和机遇的综述
论文链接:https://arxiv.org/pdf/2402.17177.pdf 背景 在分析 Sora 之前,研究者首先盘点了视觉内容生成技术的沿袭。 在深度学习革命之前,传统的图像生成技术依赖于基于手工创建特征的纹理合成和纹理映射等方法。这些方法在生成复杂而生动…...
比较 2 名无人机驾驶员:借助分析飞得更高
近年来,越来越多的政府和执法机构使用无人机从空中鸟瞰。为了高效执行任务,无人机必须能够快速机动到预定目标。快速机动使它们能够在复杂的环境中航行,并高效地完成任务。成为认证的无人机驾驶员的要求因国家/地区而异,但都要求您…...
Vue开发实例(六)实现左侧菜单导航
左侧菜单导航 一、一级菜单二、二级菜单三、三级菜单1、加入相关事件 四、菜单点击跳转1. 创建新页面2. 配置路由3. 菜单中加入路由配置4、处理默认的Main窗口为空的情况 五、动态左侧菜单导航1、动态实现一级菜单2、动态实现二级菜单 一、一级菜单 在之前的Aside.vue中去实现…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
JavaSec-RCE
简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性,…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
