【Git 暂存操作指南2】

Git 暂存操作指南

在日常的 Git 使用场景中,我们常常会遇到各种复杂的情况,需要巧妙运用 Git 的功能来实现高效开发与代码管理。接下来,我们将深入探讨一个具体的开发实例,以及如何通过暂存功能完美解决其中的问题。

一、开发场景描述

当前,我们从远程拉取了项目分支,本地同样拥有与之对应的分支。在此基础上,我们创建了一个特性分支用于专项开发。在特性分支的开发进程中,涉及对多个文件的操作,例如对 a 文件和 b 文件进行了多次修改,并且还有其他一系列文件也在不同阶段有所变动。

此时,我们面临的问题是:一方面,不想在每次提交时都将所有修改过的文件一股脑儿提交上去,而是希望有选择性地控制提交内容;另一方面,在特性分支开发完成后,需要安全、准确地将成果合并回本地分支,并顺利推送到远程,同时确保整个过程中特性分支的修改不会对其他地方造成不必要的影响,并且在后续还能灵活地处理之前暂存的文件修改。

二、暂存操作详解

(一)暂存单个或多个文件的某次修改

  1. 指定文件名暂存
    • 当需要暂存特定文件,如 a 文件和 b 文件时,可使用以下命令:
git stash push -m "第一次修改 a 和 b 文件" a b

这会将 a 文件和 b 文件当前的修改状态保存到一个暂存记录中,并添加自定义的描述信息,方便后续识别。

  • 但如果需要暂存的文件较多,逐个列出文件名就变得繁琐。此时可以利用通配符:
    假设要暂存 src 目录下所有 .js 文件的修改:
git stash push -m "第一次修改 src 目录下的 js 文件" src/*.js

这样就能一次性暂存符合条件的多个文件。
2. 交互式暂存部分文件修改

  • 执行 git add -p 命令,Git 会逐块显示文件的修改内容,此时可以根据提示选择是否暂存每个文件块。例如:
# 交互式选择要暂存的文件块
git add -p
# 将暂存区的内容暂存起来
git stash push -m "第一次修改的部分文件"

通过这种方式,可以精细地选择要暂存的文件部分,而非整个文件。

(二)查看暂存列表

使用 git stash list 命令可以查看所有的暂存记录,输出结果类似下面这样:

stash@{0}: On <特性分支名>: 第二次修改 a 和 b 文件
stash@{0}: On <特性分支名>: 第一次修改 a 和 b 文件

每个暂存记录都有对应的索引(如 stash@{0}stash@{1} 等),方便后续操作时指定。

(三)切换到指定的暂存记录

如果想应用某一次的修改,可以使用 git stash apply 命令。

  1. 应用第一次修改
git stash apply stash@{1}
  1. 应用第二次修改
git stash apply stash@{0}

应用暂存记录后,相关文件的修改就会恢复到工作区,可按需进行提交等操作。

三、提交与合并流程

(一)提交修改

当应用了指定的暂存记录后,若想提交这些修改,可按如下操作:

# 添加 a 文件和 b 文件到暂存区
git add a b
# 提交修改
git commit -m "提交 a 和 b 文件的指定修改"

这里的文件名根据实际情况替换,如果是使用通配符暂存的文件,一般添加相应的目录或符合通配符条件的文件即可。

(二)切换回本地分支并合并特性分支

提交完成后,切换回原来的本地分支,并将特性分支的修改合并过来。

# 切换回本地分支
git checkout <本地分支名>
# 合并特性分支到本地分支
git merge <特性分支名>

(三)推送到远程仓库

合并完成后,将本地分支的修改推送到远程仓库。

# 推送到远程仓库
git push origin <本地分支名>

(四)拉取最新代码

推送完成后,拉取远程仓库的最新代码,确保本地和远程仓库同步。

# 拉取最新代码
git pull origin <本地分支名>

四、清理暂存记录(可选)

如果不再需要某些暂存记录,可以使用 git stash drop 命令将其删除。

  1. 删除第一次修改的暂存记录
git stash drop stash@{1}
  1. 删除第二次修改的暂存记录
git stash drop stash@{0}

通过合理利用 Git 的暂存功能,能够在复杂的开发流程中,精准地管理文件修改状态,确保代码提交的准确性与灵活性,提升开发效率。在面对类似的复杂开发场景时,按照上述步骤操作,就能轻松驾驭 Git,让开发工作有条不紊地进行。

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

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

相关文章

华为hcia——Datacom实验指南——配置IPv4静态路由,默认路由和浮动静态路由

什么是IPv4 IPv4静态路由&#xff0c;是手动配置的&#xff0c;不会随着网络拓扑的变化而变化&#xff0c;所配置的路由信息也不会在网络中传播&#xff0c;所以它主要运用在小型网络或者作为动态路由的补充。 IPv4的配置 配置的命令很简单 IP route-static &#xff08;目…

Linux一步部署主DNS服务器

​ #!/bin/bash #部署DHCP服务 #userli 20250319if [ "$USER" ! "root" ]then echo"错误&#xff1a;非root用户&#xff0c;权限不足&#xff01;"exit 0fi#防火墙与高级权限 systemctl stop firewalld && systemctl disable firewalld…

给AI装“记忆U盘“:LangChain记忆持久化入门指南

&#x1f9e0; 什么是记忆持久化&#xff1f; 想象AI对话就像和朋友聊天&#xff1a; ​普通模式&#xff1a;每次重启都忘记之前聊过什么​持久化模式&#xff1a;给AI配了个"记忆U盘"&#xff0c;聊天记录永不丢失 核心组件三件套 #mermaid-svg-ORm8cbBXsaRy2sZ…

JumpServer:一款企业级开源堡垒机

在数字化运维时代&#xff0c;如何高效、安全地管控企业内部资产&#xff1f;JumpServer 作为一款完全开源的堡垒机&#xff0c;凭借其强大的 4A&#xff08;身份认证、授权控制、账号管理、安全审计&#xff09;能力与灵活的架构设计&#xff0c;实现事前授权、事中监察、事后…

LangChain + PostgreSQL 实现向量数据库与 RAG 搜索

1. 环境准备 安装必要的库 pip install langchain psycopg2-binary pgvector langchain-openai安装并配置 PostgreSQL 安装 PostgreSQL 确保 PostgreSQL 已正确安装并运行。你可以根据操作系统的不同参考官方文档进行安装。 创建数据库 创建一个新的数据库&#xff08;例如 …

STM32硬件IIC与OLED使用

OLED屏幕介绍 OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点&#xff0c;被认为是下一代的平面显示屏新兴应用技术 OLED显示…

idea自动生成注释

idea 自动生成注释 1 创建类时&#xff0c;自动生成注释 模板代码如下 /** * program: ${PROJECT_NAME} * * description: ${description} * * author: yun * * create: ${YEAR}-${MONTH}-${DAY} ${HOUR}:${MINUTE} **/ 2 在方法上使用快捷键生成注释 先新建一个…

doris:恢复

前提条件​ 确保您拥有管理员权限以执行恢复操作。确保您有一个有效的备份快照可供恢复&#xff0c;请参考备份。 1. 获取快照的备份时间戳​ 以下 SQL 语句可用于查看名为example_repo的 Repository 中的现有备份。 mysql> SHOW SNAPSHOT ON example_repo; -----------…

可视化图解算法:删除有序(排序)链表中重复的元素-II

1. 题目 描述 给出一个升序排序的链表&#xff0c;删除链表中的所有重复出现的元素&#xff0c;只保留原链表中只出现一次的元素。 例如&#xff1a; 给出的链表为1→2→3→3→4→4→5, 返回1→2→5. 给出的链表为1→1→1→2→3 返回2→3. 数据范围&#xff1a;链表长度 0≤…

【leetcode刷题日记】lc.53-最大子数组和

目录 1.题目 2.代码 1.题目 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-…

树莓派超全系列文档--(7)RaspberryOS播放音频和视频

播放音频和视频 播放音频和视频VLC 媒体播放器vlc GUIvlc CLI使用 cvlc 在没有图形用户界面的情况下播放媒体 在 Raspberry Pi OS Lite 上播放音频和视频指定音频输出设备指定视频输出设备同时指定音频和视频输出设备提高数据流播放性能 文章来源&#xff1a; http://raspberr…

算法250327题目

1114: 4006 AB问题 题目描述 给定两个整数A和B&#xff0c;其表示形式是&#xff1a;从个位开始&#xff0c;每三位数用逗号,隔开。 现在请计算AB的结果&#xff0c;并以正常形式输出。 输入 输入包含多组数据&#xff0c;每组数据占一行&#xff0c;由两个整数A和B组成&am…

Wireshark学习

Wireshark简介 抓包前 1.打开wireshark得到下面的界面 2.选择菜单栏上捕获-> 选项&#xff0c;勾选WLAN网卡&#xff08;这里需要根据各自电脑网卡使用情况选择&#xff0c;简单的办法可以看使用的IP对应的网卡&#xff09;。点击开始。启动抓包。 3.wireshark启动后&am…

[OS_4] 数学视角 | 多状态 | 模型检查器 | 程序验证(math)

程序 状态机 gdb 单步执行 状态迁移 状态里有什么&#xff1f;gdb 可以打印有一些特殊的状态迁移 硬件 状态机 指令执行 状态迁移 从 CPU Reset 开始执行 FirmwareFirmware 加载操作系统 (程序) 操作系统 状态机 (毫无疑问) 程序是一种真正意义上的 “数学严格” 的…

互联网的“神经中枢”域名根服务器是如何演变的?

互联网如同一条隐形的纽带&#xff0c;将全球数十亿人的生活和工作紧密相连。而在这庞大的网络体系中&#xff0c;域名根服务器则是支撑其平稳运行的“神经中枢”。那么域名根服务器是如何演变的呢&#xff1f; 一、域名根服务器互联网的“地址簿” 想象一下&#xff0c;当你…

【sylar-webserver】6 IO协程调度模块

文章目录 设计知识点 设计 IO协程调度模块&#xff0c;整个项目里最重要的模块~ 和 协程调度模块 相比&#xff0c;增加了 IO 事件的 触发条件。 所以需要重新封装 Event 事件&#xff0c; 通过 epoll_wait 监测触发事件&#xff08;重新实现了idle&#xff09;&#xff0c;…

6.2、认证主要产品与应用

目录 认证主要产品认证产品主要技术指标认证技术应用认证技术应用 - 校园网应用认证技术应用 - 网络路由认证认证技术应用 - 用户登录设备认证技术应用 - 人脸识别门禁与eID 认证主要产品 应用认证产品主要形态有三种&#xff0c;硬件模式、软件模式和软硬相结合。硬件比如说认…

一套SaaS多租户医疗云his源码,基于云计算的医院信息管理系统(云HIS)

基于云计算的医院信息管理系统&#xff08;云HIS&#xff09;&#xff0c;通过SaaS服务模式提供。这种云HIS系统设计考虑了模板化、配置化、智能化和可扩展性&#xff0c;覆盖了基层医疗机构的核心工作流程&#xff0c;并且能够与监管系统无缝对接&#xff0c;满足未来的扩展需…

人工智能技术全景图谱:从基础理论到前沿应用

人工智能技术全景图谱&#xff1a;从基础理论到前沿应用 一、AI发展历程与学科体系 1.1 人工智能三大学派 符号主义&#xff08;Symbolicism&#xff09; 逻辑推理&#xff1a;一阶谓词逻辑知识表示&#xff1a;语义网络、框架系统 连接主义&#xff08;Connectionism&#…

基于杜鹃鸟鲶鱼优化(Cuckoo Catfish Optimizer,CCO)算法的多个无人机协同路径规划(可以自定义无人机数量及起始点),MATLAB代码

一、杜鹃鸟鲶鱼优化算法 杜鹃鸟鲶鱼优化&#xff08;Cuckoo Catfish Optimizer&#xff0c;CCO&#xff09;算法模拟了杜鹃鸟鲶鱼的搜索、捕食和寄生慈鲷行为。该算法的早期迭代侧重于执行多维包络搜索策略和压缩空间策略&#xff0c;并结合辅助搜索策略来有效限制慈鳔的逃逸空…