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

Git实战演练,模拟日常使用,快速掌握命令

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.xdnf.cn/news/598195.html

相关文章:

  • “轩辕杯“云盾砺剑 CTF挑战赛web方向题解
  • 【AI论文】VisualQuality-R1:通过强化学习进行推理诱导的图像质量评估
  • 【Java】异常的初步认识
  • 1.2 Box以及 InsideBox的使用
  • python字符串
  • fastadmin添加管理员账号只能查看一个表中指定条件的数据
  • 【朝花夕拾】S32K144 backdoor key解锁后劳德巴赫或者JLINK更新app
  • Python3 批量处理银行电子回单
  • 深搜题(如何找到进入下一层深搜的条件)
  • 第十九章 ADC——电压采集
  • ZeroMQ Sockets介绍及应用示例
  • 01_消息中间件概述
  • for...in 和 for...of:用法、区别
  • Vue2 项目报错问题收录(持续更新...)
  • 101个α因子#21
  • 火语言UI组件--控件事件触发
  • Vaptcha 手势、轨迹验证码
  • idea常用配置 properties中文输出乱码
  • AI智慧高光谱遥感实战精修班暨手撕99个案例项目、全覆盖技术链与应用场景一站式提升方案
  • 车载软件架构 --- FLASH bootloader 设计要点
  • 随机链表的复制问题详解与代码实现
  • python学习打卡day33
  • 等离子体隐身技术和小型等离子体防御装置设计
  • 军事目标系列之迷彩作战人员检测数据集VOC+YOLO格式2755张1类别
  • C#中WSDL文件引用问题
  • 【接近平均分配箱子数量】2022-1-23
  • uni 常用api
  • 学习STC51单片机11(芯片为STC89C52RC)
  • 嵌入式软件架构规范之 - 分层设计
  • Linux终端输入有80个字符的限制处理