当前位置: 首页 > news >正文

Git推送代码冲突与Git分支管理

文章目录

  • 两种Git冲突
    • (1) 多人修改的代码不是同一个地方的冲突
    • (2) 多人修改的代码是同一个地方的冲突
  • 分支管理
    • 本地分支管理
      • 创建本地分支
        • 两个push方法
      • 删除本地分支
    • 远程分支管理

两种Git冲突

Git冲突

在这里插入图片描述

(1) 多人修改的代码不是同一个地方的冲突

还是原来那段代码

#include<iostream>
using namespace std;void sort(int* arr, int size)
{int tmp = 0;for(int i = 0; i < size-1; i++){for(int j = 0; j < size-1-i; j++){if(arr[j] > arr[j+1]){tmp = arr[j];arr[j] = arr[i];arr[i] = tmp;}}}
}int main()
{int arr[] = {12, 10, 65, 74, 34, 2, 8, 26, 31, 17};int size = sizeof(arr) / sizeof(arr[0]);sort(arr, size);return 0;
}

首先先保证手上的都是最新的代码,所以要先pull一下
在这里插入图片描述
在这里插入图片描述

然后我们分别在这两个地方添加改动
在这里插入图片描述
跟之前一样的流程
git add、commit、push
我们先提交其中任意一个,另一个先保持commit到本地仓库的状态

我这里先提交的Linux端的代码
在这里插入图片描述
然后我们提交PC端的代码时就会发现
在这里插入图片描述
错误:未能将一些引用推送到 'github.com:JOLLY-Z/git_test.git' 更新被拒绝,因为远程仓库包含您本地没有的工作。这通常是由另一个仓库推送到相同的引用导致的。

这时只需要按照提示先进行 git pull 来更新下本地代码即可
在这里插入图片描述

这时由于PC端和Linux端修改的不是同一个地方,所以Git会自动为我们merge(合并)代码
此时我们cat一下main
在这里插入图片描述
可以看到Linux端的代码被merge到我们这里,此时就可以直接提交了
在这里插入图片描述

(2) 多人修改的代码是同一个地方的冲突

如果大家修改的是同一个地方那怎么办,这下怎么通过pull来合并代码??

同样的,修改代码前先保证手上的代码是最新的,先pull一下

然后我这里修改下readme
在这里插入图片描述
然后一样的add、commit、 push

在这里插入图片描述


此时再推送PC端的修改肯定会有冲突
在这里插入图片描述
按照提示进行 git pull 我们也会看到
在这里插入图片描述
自动合并失败,修理冲突然后提交

那我们看看readme里现在是怎么样
在这里插入图片描述
看来git为我们区别出来了两个文档的差异
上面那个是我们的,下面那个通过commit id可以知道是上一次Linux的提交
在这里插入图片描述

这时就需要自己手动修改,再重新提交
在这里插入图片描述

然后可以重新提交
在这里插入图片描述
现在去github也能看到新提交结果

在这里插入图片描述

分支管理

在团队开发中,不同成员可能需要同时处理不同的功能模块、修复 bug 或进行实验性开发。如果所有开发都在主分支上进行,会导致代码冲突频繁发生,严重影响开发进度,
并且由于分支的隔离性,每个分支相当于一个独立的 “开发环境”,团队成员可以在自己的分支上独立编写、测试代码,而不会影响其他分支的稳定性

本地分支管理

创建本地分支

git branch -vv 用于查看本地分支详细信息的命令
在这里插入图片描述
可以看到当前就只有一个分支,并且处于上次的修改readme步骤

然后我们可以通过两个命令来创建新分支并直接切换到新分支

git switch -c 这里写新分支名字

在这里插入图片描述

git checkout -b 这里写新分支名字

在这里插入图片描述

然后再使用git branch 就能看到新分支
在这里插入图片描述

通过git branch -vv 查看分支详情我们也能看到基于main创建的两个分支

在这里插入图片描述
并且能看到main分支追踪的是远程的main(origin / main)
由于新分支并没有追踪哪条分支,所以直接pull是不成功的,需要指定拉取远程仓库的哪条分支

在这里插入图片描述

此时我们修改下readme文件,并更新到sortdev分支下
在这里插入图片描述
然后在sortdev分支下add和commit一下
在这里插入图片描述

两个push方法

(一)合并到main分支,通过main分支提交
首先回到main分支,然后通过 git merge sortdev 将sortdev上的分支合并到main分支

在这里插入图片描述
当合并过来以后,就相当于直接合并到main仓库了里了,就不需要再来走一遍add和commit
此时就能再通过 git push origin main:main 来提交修改
在这里插入图片描述

(二)直接跟之前一样使用 git push origin sortdev:main
在这里插入图片描述

此时再切换回main分支就能看到当前main分支落后于远程仓库
在这里插入图片描述
通过git pull 可以更新

删除本地分支

main 分支之前合并过sotrdev分支,则可以通过这条命令
git branch -d sortdev
但是如果要删除的分支被修改过,并且没有合并到main分支这样删除会报错

开心@Jolly-Z MINGW64 /d/Jolly/Git/git_test (main)
$ git branch -d sortdev
error: The branch 'sortdev' is not fully merged.
If you are sure you want to delete it, run 'git branch -D sortdev'.

如果不想合并到main分支想直接删除需要把** -d 改成 -D**

开心@Jolly-Z MINGW64 /d/Jolly/Git/git_test (main)
$ git branch -D sortdev
Deleted branch sortdev (was e41aa89).

注意: 不能在sortdev分支删除sortdev分支,要切换到main去删除sortdev分支

远程分支管理

首先在GitHub创建一个远程分支
在这里插入图片描述

当我们在github新建一个新分支以后,要在git客户端执行这条命令来更新客户端

git fetch

在这里插入图片描述
然后我们在本地也创建一个一样的分支,此时又两种方法时本地分支指向远程分支

  1. git checkout -b 本地分支名

    git branch -u 本地分支名

    在这里插入图片描述
    在这里插入图片描述
    然后通过 git branch -vv 可以看到本地的Version_2已经追踪了远程的Version_2
    在这里插入图片描述

  2. git checkout -b 本地分支 要追踪的远程分支

    在这里插入图片描述

然后我们修改下readme文件
在这里插入图片描述
再把之前git add 、git commit 连招再打一遍
在这里插入图片描述
于是我们就能在Github的不同分支上看到不一样的效果

在这里插入图片描述
在这里插入图片描述

http://www.dtcms.com/a/278693.html

相关文章:

  • reasense api 文档
  • 九、官方人格提示词汇总(中-2)
  • 扩散模型的数学基础 —— 贝叶斯
  • 【LeetCode240.搜索二维矩阵Ⅱ】以及变式
  • ASP.NET Core中数据绑定原理实现详解
  • C++-多态
  • mybatis-plus-jpa-support
  • 基于MATLAB的LSTM长短期记忆神经网络的数据回归预测方法应用
  • 穿透、误伤与回环——Redis 缓存防御体系的负向路径与治理艺术
  • LightGBM 在处理**不均衡二分类任务**时,能在 **AUC 和 Accuracy** 两个指标上表现良好
  • 三轴云台之姿态调节技术篇
  • 【2025】Global Mapper中文版安装教程保姆级一键安装教程(附安装包)
  • 海外货运物流系统多语言系统实现
  • 蜻蜓I即时通讯水银版系统直播功能模块二次开发文档-详细的直播功能模块文档范例-卓伊凡|麻子
  • 【PTA数据结构 | C语言版】字符串替换算法
  • mitt全局通信
  • Boost.Asio 异步写:为什么多次 async_write_some 会导致乱序,以及如何解决
  • Angular 框架下 AI 驱动的企业级大前端应用开
  • 2025/7/14——java学习总结
  • Ubuntu安装Mongodb
  • 《甘肃棒球》国家级运动健将标准·棒球1号位
  • 九、官方人格提示词汇总(下)
  • OpenCV 视频处理与摄像头操作详解
  • 面试题--xxl-job分布式任务调度
  • 全面解析WOFOST与PCSE农作物生长模型;农作物生长和产量预测
  • 基于esp32系列的开源无线dap-link项目使用介绍
  • 空间智能-李飞飞团队工作总结(至2025.07)
  • 【工具】AndroidStudio修改中文语言汉化
  • Python数据容器-通用功能
  • 九、官方人格提示词汇总(中-1)