[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) 额外内…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
7种分类数据编码技术详解:从原理到实战
在数据分析和机器学习领域,分类数据(Categorical Data)的处理是一个基础但至关重要的环节。分类数据指的是由有限数量的离散值组成的数据类型,如性别(男/女)、颜色(红/绿/蓝)或产品类…...
可下载旧版app屏蔽更新的app市场
软件介绍 手机用久了,app越来越臃肿,老手机卡顿成常态。这里给大家推荐个改善老手机使用体验的方法,还能帮我们卸载不需要的app。 手机现状 如今的app不断更新,看似在优化,实则内存占用越来越大,对手机性…...
C++参数传递 a与a的区别
在 C 中,&a(引用)和 a(值传递) 的关键区别在于 参数如何传递给函数,以及由此引发的 性能、语义和安全问题。 最核心的在于你想不想传入的参数被改变,如果想,就用参数传递&#…...
Razor编程中@Helper的用法大全
文章目录 第一章:Helper基础概念1.1 Helper的定义与作用1.2 Helper的基本语法结构1.3 Helper与HtmlHelper的区别 第二章:基础Helper用法2.1 无参数Helper2.2 带简单参数的Helper2.3 带默认值的参数2.4 使用模型作为参数 第三章:高级Helper用法…...
Nginx 事件驱动理解
在做埋点采集服务的过程中,主要依靠openresty加lua脚本来实现采集。高并发还是主要依靠nginx来实现。而其核心就是事件驱动/多路io复用(epoll机制),不同的linux服务器都有对应的实现方式。 而epoll机制就是,应用启动的…...
