01 引言

上一期借助Idea,完成了Git仓库的建立、配置、代码提交等操作,初步入门了Git的使用。然而日常开发中经常面临各种各样的问题,入门级的命令远远不够使用。

这一期,我们将展开介绍Git的日常处理命令,解决日常问题,熟悉Git操作。

02 Git分支管理

一个新的项目开始,我们需要从主干分支上拉取开发分支。我们还是以上一期的project-test 仓库为例。

2.1 创建新的分支

按照下图所示操作:

创建dev-20250520分支:

Git命令:

# 创建新分支
git checkout -b dev-20250520 origin/main# 切换分支
git checkout dev-20250520

查看所有本地和远程分支:
在这里插入图片描述

对应的命令:

# 查看所有本地和远程分支
git branch -a# 查看远程分支
git branch -r# 查看本地所有分支
git branch

2.2 提交代码

编写实例代码,直接提交到本地仓库。

其实也可以直接从控制台看看Git执行了哪些命令:

2.3 推送到远程仓库

首次推送到远程仓库会自动创建分支名的远程仓库分支。正常开发中我们的代码应该是直接从分支项目检出的,不需要创建远程仓库的分支。

远程仓库查看:

03 处理冲突

为了制造冲突,直接在GitHub上修改GitTest.java文件。

3.1 制造冲突

本地修改同一个文件(GitTest.java),提交本地仓库没有冲突,但是推送远程仓库时,就会出现冲突。

image-20250520171334778

3.2 解决冲突

冲突的解决保留历史分支记录,我们一般会选择Merge处理。

选择Merge之后,Git会自动从远程仓库拉取最新的代码,并在工作区标记处冲突的位置(如上图)。我们通过Idea继续Merge处理冲突。

左右两侧分别表示本地仓库和远程仓库,中间是处理的最终结果。黄色代表相对去中间工作区的改动的地方。点击箭头即可完成代码移动。

假设我们两边的代码都需要,我们只要一次点击箭头即可完成代码的合并(冲突的解决),再次提交到本地仓库。

代码提交到本地仓库之后,就可查看该分支的所有变更记录:

也可以通过命令查看:

# 查看历史提交记录
git log

命令结果:

最后推送到远程仓库即可。

04 代码回滚

代码回滚是一个优秀的设计。网上不是有这样的梗,产品做了第一版方案后给老板看,老板觉得不满意,然后来来回回的改,最后老板觉得还是第一版比较好。产品的心中一万只羊驼奔腾而过。

程序员同样面临的这样的场景,但是代码回滚完美的解决了这样的问题。

我们模拟三版提交方案。在GitTest.java增加提交的版本信息:

/***  第一版提交方案*/
private void firstCase() {System.out.println("第一版Case");
}/***  第二版提交方案*/
private void secondCase() {System.out.println("第二版Case");
}/***  第三版提交方案*/
private void thirdCase() {System.out.println("第三版Case");
}

假设我们要回到第一版的方案:

选中第一版记录,然后右键复制版本号

4.1 未推送远程的回滚

命令:

# --hard 底回退到指定提交,丢弃所有未提交的更改
# –mixed(默认):移动 HEAD 并重置暂存区,但保留工作区修改
# –soft:仅移动 HEAD,保留工作区和暂存区
git reset --hard 回退的版本号

结果迅速到达第一版:

4.2 已推送至远程的回滚

命令:

# 回退到指定的版本号
git revert 版本号

如果是相同的位置的代码修改可能会出现冲突,正常解决即可

解决之后,需要重洗提交代码。

05 合并分支

代码合并阶段一般是出现在开发分支过久,迭代多次需要合并新分支,另外一个就是发布代码之后,必须将代码合并到主干上。

案例中我们一直在dev-20250520开发,我们将开发分支合并到主干(main)分支上。首先我们需要需要切换分支到主干分支上。

切换分支的命令:

# 切换到主干分支上
git checkout main

Idea的操作:

切到主干分支发现并没有GitTest.java的文件:

分支合并:

合并之后代码会之间保存到暂存区,直接推送到远程即可:

06 小结

今天就一个简单的模拟实战项目,练习了Git日常处理问题的命令。如果有什么更加有趣的命令,评论区留言讨论!

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

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

相关文章

wordpress主题开发中常用的12个模板文件

在WordPress主题开发中,有多种常用的模板文件,它们负责控制网站不同部分的显示内容和布局,以下是一些常见的模板文件: 1.index.php 这是WordPress主题的核心模板文件。当没有其他更具体的模板文件匹配当前页面时,Wor…

数据库blog5_数据库软件架构介绍(以Mysql为例)

🌿软件的架构 🍂分类 软件架构总结为两种主要类型:一体式架构和分布式架构 ● 一体化架构 一体式架构是一种将所有功能集成到一个单一的、不可分割的应用程序中的架构模式。这种架构通常是一个大型的、复杂的单一应用程序,包含所…

离线服务器算法部署环境配置

本文将详细记录我如何为一台全新的离线服务器配置必要的运行环境,包括基础编译工具、NVIDIA显卡驱动以及NVIDIA-Docker,以便顺利部署深度学习算法。 前提条件: 目标离线服务器已安装操作系统(本文以Ubuntu 18.04为例&#xff09…

chromedp -—— 基于 go 的自动化操作浏览器库

chromedp chromedp 是一个用于 Chrome 浏览器的自动化测试工具,基于 Go 语言开发,专门用于控制和操作 Chrome 浏览器实例。 chromedp 安装 go get -u github.com/chromedp/chromedp基于chromedp 实现的的简易学习通刷课系统 目前实现的功能&#xff…

高级特性实战:死信队列、延迟队列与优先级队列(三)

四、优先级队列:优先处理重要任务 4.1 优先级队列概念解析 优先级队列(Priority Queue)是一种特殊的队列数据结构,它与普通队列的主要区别在于,普通队列遵循先进先出(FIFO)的原则,…

python打卡day34

GPU训练及类的call方法 知识点回归: CPU性能的查看:看架构代际、核心数、线程数GPU性能的查看:看显存、看级别、看架构代际GPU训练的方法:数据和模型移动到GPU device上类的call方法:为什么定义前向传播时可以直接写作…

Newtonsoft Json序列化数据不序列化默认数据

问题描述 数据在序列号为json时,一些默认值也序列化了,像旋转rot都是0、缩放scal都是1,这样的默认值完全可以去掉,减少和服务器通信数据量 核心代码 数据结构字段增加[DefaultValue(1.0)]属性,缩放的默认值为1 public class Vec3DataOne{[DefaultValue(1.0)] public flo…

可增添功能的鼠标右键优化工具

软件介绍 本文介绍一款能优化Windows电脑的软件,它可以让鼠标右键菜单添加多种功能。 软件基本信息 这款名为Easy Context Menu的鼠标右键菜单工具非常小巧,软件大小仅1.14MB,打开即可直接使用,无需进行安装。 添加功能列举 它…

Gemini 2.5 Pro 一次测试

您好,您遇到的重定向循环问题,即在 /user/messaging、/user/login?return_to/user/messaging 和 /user/login 之间反复跳转,通常是由于客户端的身份验证状态检查和页面重定向逻辑存在冲突或竞争条件。 在分析了您提供的代码(特别…

vue3前端后端地址可配置方案

在开发vue3项目过程中,需要切换不同的服务器部署,代码中配置的服务需要可灵活配置,不随着run npm build把网址打包到代码资源中,不然每次切换都需要重新run npm build。需要一个配置文件可以修改服务地址,而打包的代码…

大模型微调与高效训练

随着预训练大模型(如BERT、GPT、ViT、LLaMA、CLIP等)的崛起,人工智能进入了一个新的范式:预训练-微调(Pre-train, Fine-tune)。这些大模型在海量数据上学习到了通用的、强大的表示能力和世界知识。然而,要将这些通用模型应用于特定的下游任务或领域,通常还需要进行微调…

编程技能:字符串函数10,strchr

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 (一)WIn32 专栏导航 上一篇:编程技能:字符串函数09,strncmp 回到目录…

动态规划-53.最大子数组和-力扣(LeetCode)

一、题目解析 在给定顺序的数组中找出一段具有最大和的连续子数组,且大小最小为1. 二、算法原理 1.状态表示 我们可以意一一枚举出所有的子数组,但我们想要的是最大子数组,所以f[i]表示:以i位置为结尾,所有子数组的最…

C++ queue对象创建、queue赋值操作、queue入队、出队、获得队首、获得队尾操作、queue大小操作、代码练习

对象创建&#xff0c;代码见下 #include<iostream> #include<queue>using namespace std;int main() {// 1 默认构造函数queue<int> q1;// 2 拷贝构造函数queue<int> q2(q1);return 0;} queue赋值操作&#xff0c;代码见下 #include<iostream>…

全链路解析:影刀RPA+Coze API自动化工作流实战指南

在数字化转型加速的今天&#xff0c;如何通过RPA与API的深度融合实现业务自动化提效&#xff0c;已成为企业降本增效的核心命题。本文以「影刀RPA」与「Coze API」的深度协作为例&#xff0c;系统性拆解从授权配置、数据交互到批量执行的完整技术链路&#xff0c;助你快速掌握跨…

php本地 curl 请求证书问题解决

错误: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for 解决方案 在php目录下创建证书文件夹, 执行下面生成命令, 然后在php.ini 文件中配置证书路径; 重启环境 curl --eta…

【图数据库】--Neo4j 安装

目录 1.Neo4j --概述 2.JDK安装 3.Neo4j--下载 3.1.下载资源包 3.2.创建环境变量 3.3.运行 Neo4j 是目前最流行的图形数据库(Graph Database)&#xff0c;它以节点(Node)、关系(Relationship)和属性(Property)的形式存储数据&#xff0c;专门为处理高度连接的数据而设计。…

MIT 6.S081 2020Lab5 lazy page allocation 个人全流程

文章目录 零、写在前面一、Eliminate allocation from sbrk()1.1 说明1.2 实现 二、Lazy allocation2.1 说明2.2 实现 三、Lazytests and Usertests3.1 说明3.2 实现3.2.1 lazytests3.2.2 usertests 零、写在前面 可以阅读下4.6页面错误异常 像应用程序申请内存&#xff0c;内…

(Git) 稀疏检出(Sparse Checkout) 拉取指定文件

文章目录 &#x1f3ed;作用&#x1f3ed;指令总览&#x1f477;core.sparseCheckout&#x1f477;sparse-checkout 文件 &#x1f3ed;实例演示⭐END&#x1f31f;交流方式 &#x1f3ed;作用 类似于 .gitignore 进行文件的规则匹配。 一般在需要拉取大型项目指定的某些文件…

docker初学

加载镜像&#xff1a;docker load -i ubuntu.tar 导出镜像&#xff1a;docker save -o ubuntu1.tar ubuntu 运行&#xff1a; docker run -it --name mu ubuntu /bin/bash ocker run -dit --name mmus docker.1ms.run/library/ubuntu /bin/bash 进入容器&#xff1a;docke…