[Git][多人协作][下]详细讲解
目录
- 1.不同分支下多人协作
- 2.远程分⽀删除后,本地`git branch -a`依然能看到
1.不同分支下多人协作
- ⼀般情况下,如果有多需求需要多⼈同时进⾏开发,是不会在⼀个分⽀上进⾏多⼈开发,⽽是⼀个需求或⼀个功能点就要创建⼀个
feature
分⽀ - 情景设置:
- 目标:远程
main
分支下新增func1
和func2
文件 - 实现:开发者A新增
func1
,开发者B新增func2
- 条件:不同分支下协作完成,各自让某一个功能私有某一个分支
- 目标:远程
- 开发者A:在自己分支上,正常推送,没有问题
$ vim func1 $ cat func1 fun1 from A$ git add . $ git commit -m "A push func1" [feature-1 84e77e0] A push func11 file changed, 1 insertion(+)create mode 100644 func1$ git push origin feature-1 Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 20 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 318 bytes | 159.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To github.com:DieSnowK/Git-Learn.git10cd204..84e77e0 feature-1 -> feature-1
- 开发者B:在自己分支上,正常推送,没有问题
$ cat func2 fun2 fron B$ git add . $ git commit -m "B push func2" [feature-2 31c8cbb] B push func21 file changed, 1 insertion(+)create mode 100644 func2$ git push origin feature-2 Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 20 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 343 bytes | 343.00 KiB/s, done. Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 To github.com:DieSnowK/Git-Learn.git10cd204..31c8cbb feature-2 -> feature-2 PS C:\Users\w1752\Desktop\My_Repository\Git-Learn>
- 至此,开发者A和开发者B都互相看不到对方开发的文档,并且在自己的分支上各自推送时,没有任何冲突,两人互不影响,开发起来很丝滑
- 假如此时开发者B无法继续完成文档开发,需要开发者A接手,该怎么办?
- 开发者B将自己的分支名告诉开发者A,开发者A从远端仓库将该分支拉下来
$ git branch * feature-1main$ git pull remote: Enumerating objects: 4, done. remote: Counting objects: 100% (4/4), done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 3 (delta 0), pack-reused 0 Unpacking objects: 100% (3/3), 323 bytes | 323.00 KiB/s, done. From github.com:DieSnowK/Git-Learn* [new branch] feature-2 -> origin/feature-2 There is no tracking information for the current branch. Please specify which branch you want to merge with. See git-pull(1) for details.git pull <remote> <branch>If you wish to set tracking information for this branch you can do so with:git branch --set-upstream-to=origin/<branch> feature-1
- 开发者A本地创建一个
feature-2
分支,并且和远端的feature-2
分支关联起来$ git checkout -b feature-2 origin/feature-2 Branch 'feature-2' set up to track remote branch 'feature-2' from 'origin'. Switched to a new branch 'feature-2'$ cat func2 fun2 from B$ vim func2 # Coding...$ cat func2 fun2 fron B fun2 Done from A$ git add .$ git commit -m "A edit func2 Done" [feature-2 2e279ac] A edit func2 Done1 file changed, 2 insertions(+), 1 deletion(-)$ git push origin feature-2 Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 20 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (3/3), 280 bytes | 280.00 KiB/s, done. Total 3 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:DieSnowK/Git-Learn.git31c8cbb..2e279ac feature-2 -> feature-2
- 开发者B将自己的分支名告诉开发者A,开发者A从远端仓库将该分支拉下来
- 两人开发全部完毕后,都需要将各自的代码合并到
main
中才算真正的开发完毕,流程如下-
开发者A:
-
切换至
main
,git pull
,保证本地main
是最新内容 -
切换至
feature-1
分支,合并main
分支,有冲突就在feature-1
分支解决 -
切换至
main
分支,合并feature-1
分支 -
将
main
分支推送至远端
$ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'.$ git pull Already up to date.$ git checkout feature-1 Switched to branch 'feature-1'$ git merge main Already up to date.$ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'.$ git merge feature-1 Updating 10cd204..84e77e0 Fast-forwardfunc1 | 1 +1 file changed, 1 insertion(+)create mode 100644 func1$ cat func1 fun1 from A$ git push Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 To github.com:DieSnowK/Git-Learn.git10cd204..84e77e0 main -> main
-
-
开发者B:
-
切换至
main
,git pull
,保证本地main
是最新内容 -
切换至
feature-2
分支,合并main
分支,有冲突就在feature-2
分支解决 -
由于
feature-1
分支已经merge
进来了新内容,为了保证feature-2
远程分支最新,最好在此时git push
一下git push
的另一个原因是在实际的开发中,main
的merge
操作⼀般不是由我们⾃⼰在本地进进行,而是由审查人员进行- 其他⼈员或某些平台
merge
时,操作的肯定是远程分⽀,所以就要保证远程分⽀的最新 - 如果此时
merge
发生冲突,解决完冲突后需要commit
之后才能push
-
切换至
main
分支,合并feature-2
分支 -
将
main
分支推送至远端
$ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'.$ git pull Already up to date.$ git checkout feature-2 Switched to branch 'feature-2' Your branch is up to date with 'origin/feature-2'.$ git merge main Merge made by the 'ort' strategy.func1 | 1 +1 file changed, 1 insertion(+)create mode 100644 func1$ ls SnowK.txt func1 func2$ git status On branch feature-2 Your branch is ahead of 'origin/feature-2' by 2 commits.(use "git push" to publish your local commits)nothing to commit, working tree clean$ git push Enumerating objects: 4, done. Counting objects: 100% (4/4), done. Delta compression using up to 20 threads Compressing objects: 100% (2/2), done. Writing objects: 100% (2/2), 292 bytes | 292.00 KiB/s, done. Total 2 (delta 1), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (1/1), completed with 1 local object. To github.com:DieSnowK/Git-Learn.git2e279ac..2250eeb feature-2 -> feature-2$ git checkout main Switched to branch 'main' Your branch is up to date with 'origin/main'.$ git merge feature-2 Updating 84e77e0..2250eeb Fast-forwardfunc2 | 2 ++1 file changed, 2 insertions(+)create mode 100644 func2$ ls SnowK.txt func1 func2$ git push Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 To github.com:DieSnowK/Git-Learn.git84e77e0..2250eeb main -> main
-
-
- 至此,无论本地还是远端的
feature-1
和feature-2
分支都没用了,可以直接删掉了
2.远程分⽀删除后,本地git branch -a
依然能看到
- 问题描述:明明已经删除了远程的⼏个分⽀,但使⽤
git branch -a
发现很多在远程仓库已经删除的分⽀在本地依然可以看到 - 问题追溯:
git remote show origin
$ git remote show origin * remote originFetch URL: git@github.com:DieSnowK/Git-Learn.gitPush URL: git@github.com:DieSnowK/Git-Learn.gitHEAD branch: mainRemote branches:main trackedrefs/remotes/origin/dev stale (use 'git remote prune' to remove)refs/remotes/origin/test stale (use 'git remote prune' to remove)Local branch configured for 'git pull':main merges with remote mainLocal ref configured for 'git push':main pushes to main (up to date)
- 解决方案:使用
git remote prune origin
命令$ git remote prune origin Pruning origin URL: git@github.com:DieSnowK/Git-Learn.git* [pruned] origin/dev* [pruned] origin/test
相关文章:

[Git][多人协作][下]详细讲解
目录 1.不同分支下多人协作2.远程分⽀删除后,本地git branch -a依然能看到 1.不同分支下多人协作 ⼀般情况下,如果有多需求需要多⼈同时进⾏开发,是不会在⼀个分⽀上进⾏多⼈开发,⽽是⼀个需求或⼀个功能点就要创建⼀个feature分…...

MySQL笔记(七):索引
一、索引优化速度 创建对应字段的索引,只对该列有效,只能提高该列的查询速度 创建索引后,查询速度变快,但是表占用空间变大 create index 索引名 on 表名(需要创建索引的列)二、索引的原理 普通索引允许该字段重复 全文索引&#…...

JS 原型和原型链
构造函数 封装是面向对象思想中比较重要的一部分,js 面向对象可以通过构造函数实现的封装。 同样的将变量和函数组合到了一起并能通过 this 实现数据的共享,所不同的是 JS 借助构造函数创建出来的实例对象之间是彼此不影响的 存在浪费内存的问题&#…...
【无标题】图像增强技术:直方图均衡化、拉普拉斯算子、对数变换与伽马变换
图像增强技术:直方图均衡化、拉普拉斯算子、对数变换与伽马变换 在图像处理领域,图像增强是一种关键技术,用于提升图像的视觉效果和质量。本文将介绍四种常用的图像增强方法:直方图均衡化、拉普拉斯算子、对数变换和伽马变换。我…...
自动化专业英语
前言 电子信息、电气工程、自动化专业英语词汇汇总,不定期更新 常用 Asynchronous:异步synchronous:同步notification:通知blade:平面shaft:轴magnetic:磁场的bearing:轴承valve&…...
如何使用 Python 进行数据可视化,比如绘制折线图?
要使用Python进行数据可视化,可以使用matplotlib库来绘制折线图。以下是一个简单的示例代码: 首先,确保已安装matplotlib库。可以使用以下命令安装: pip install matplotlib在Python脚本中导入matplotlib库: import…...
PostgreSQL数据库的事务ID和事务机制
PostgreSQL后续简称PG。PG只读事务不会分配事务ID。为了在共享锁等情况下对事务进行标识,需要一种非持久化的事务ID,即虚拟事务ID,vxid。虚拟事务ID不需要把事务ID持久化到磁盘。因为事务ID是很宝贵的资源,简单的select语句不会申…...

LeetCode 热题 HOT 100 (020/100)【宇宙最简单版】[创作中]
【链表】No. 0142 环形链表 II【中等】👉力扣对应题目指路 希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#…...

XML动态sql查询当前时间之前的信息报错
如图,sql语句在数据库里可以正常运行但是再XML文件不可以正常运行,报错。 原因:在XML中小于号"<"是会被默认认定成文一个标签的开始,所以用小于号就会报错。 解决办法: 1.把表达式反过来改成大于号 2…...

EMQX服务器安装MQTT测试
cd /usr/local/develop wget https://www.emqx.com/en/downloads/broker/5.7.1/emqx-5.7.1-el7-amd64.tar.gz mkdir -p emqx && tar -zxvf emqx-5.7.1-el7-amd64.tar.gz -C emqx ./emqx/bin/emqx start 重启 ./emqx/bin/emqx restart http://10.8.0.1:18083/ 账号ad…...

3. 无重复字符的最长子串(滑动窗口)
目录 :题目: 二:代码: 三:结果: 一:题目: 给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串 的长度。 二:代码: class Solution { …...

用javaagent和javassist实现Arthas的watch功能
一、被监控的服务 spring-boot-demo 1、 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation&q…...
golang 图片转1bit color bmp图片
问题背景 一些打印机需要的都是1bit color bmp图片,但是golang中没有直接的办法,官方image库最低bpp为8,打印机无法使用。 在github上找到了很多资源,都没有直接能转的,突然看到一个老外,可以支持plattered图片转位1bit color bmp图片,然后自己先把图片转位plattered黑…...

Leetcode75-5 反转字符串的元音字母
本质上来说就是反转字符串 一部分需要反转 一部分不动 思路: 1.用String字符串倒序拼接 就是过滤掉不是元音字符 然后把所有的字符(非元音的直接复制过来 元音字母直接从反转的字符串里边复制即可) 2.看了题解发现自己写的啰嗦了 就是一个双指针问题用…...
static关键字在Java中的作用与用法
static关键字在Java中的作用与用法 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 在Java中,static关键字是一个非常重要的概念,用于定义静态成员、方法和内部类。它的使用可…...

50etf期权行权采用什么交割方式 ?
50ETF期权是欧式期,要到期日当天才能行权交制,其交割方式是实物交割买卖双方在到期行权日时需要准备一手交钱,一手收货或是一手交,一手收钱,如果持有期权到达到期日之前,投资者认为行权并不划算,…...

ts-node 报错 ERR_UNKNOWN_FILE_EXTENSION
问题 有个monorepo项目,在最外层一次性打包 3 个项目的脚本已经成功实现,如下: "build:test": "cross-env NODE_ENVtest vite build --mode test && esno ./build/script/postBuild.ts", "build:prod"…...

水域救援设备,保护水域安全_鼎跃安全
季作为一年中最炎热的季节,不仅带来了难耐的高温,也悄然间加剧了水域安全问题的严峻性。这一时期,正值学生群体享受悠长暑假的宝贵时光,他们往往倾向于寻找清凉之地以解酷暑,水域因此成为了不少学生的首选之地。然而&a…...

openmetadata本地编译环境搭建
openmetadata本地编译环境搭建 本地环境: Docker 20 or higher Java JDK 17 Antlr 4.9.2 - sudo make install_antlr_cli JQ - brew install jq (osx) apt-get install jq (Ubuntu) Maven 3.5.x or higher - (with Java JDK 11) Python 3.7, 3.8 or 3.9 Node…...
LeetCode Hard|【25. K 个一组翻转链表】
力扣题目链接 首先我们考虑一种很直观的思路: 遍历链表,统计链表长度遍历链表,进行翻转 对于每一组长度为 K 的节点,进行翻转如果剩余节点不足 K 个,则不进行翻转 连接翻转后的子链表 这里我们用的就是只用 O(1) 额外内…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...

day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...

通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...