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

【Git 暂存操作与升级应用指南】

Git 暂存操作与升级应用

  • Git 暂存操作指南
    • 一、开发场景描述
    • 二、暂存操作详解
      • (一)暂存单个或多个文件的某次修改
      • (二)查看暂存列表
      • (三)切换到指定的暂存记录
    • 三、提交与合并流程
      • (一)提交修改
      • (二)切换回本地分支并合并特性分支
      • (三)推送到远程仓库
      • (四)拉取最新代码
      • (五)恢复暂存的修改(可选)
    • 四、多次暂存与暂存记录(可选)
      • (一) 保存不同修改状态到不同的 stash 记录
        • 1. 保存第一次修改
        • 2.保存第二次修改
      • 3. 查看 stash 列表
      • (二) 切换到指定的 stash 记录
        • 1.应用第一次修改
        • 2.应用第二次修改
      • (三)提交修改
      • (四)清理 stash 记录(可选)
        • 1. 删除第一次修改的 stash 记录
        • 2.删除第二次修改的 stash 记录
      • (五)总结
    • 五、清理暂存记录(可选)

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 "第一次修改的部分文件"

通过这种方式,可以精细地选择要暂存的文件部分,而非整个文件。
3. 不指定具体文件名
如果你想暂存工作区里所有文件的修改(包括新增文件),可以不指定具体文件名,直接使用 git stash push 命令:

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 <本地分支名>

(五)恢复暂存的修改(可选)

如果你后续还需要处理 a 文件和 b 文件的修改,可以在特性分支中恢复暂存的修改。

# 切换回特性分支
git checkout <特性分支名>
# 恢复暂存的修改
git stash pop

四、多次暂存与暂存记录(可选)

若要在提交后补加 a 文件和 b 文件的不同修改状态,并且能在不同修改状态间切换,你可以借助 git stash 来实现。下面为你详细介绍操作步骤。

(一) 保存不同修改状态到不同的 stash 记录

当你在特性分支上对 a 文件和 b 文件进行了多次修改,每次修改后都可以将其保存到不同的 stash 记录里。

1. 保存第一次修改
# 保存 a 文件和 b 文件的第一次修改到 stash
git stash push -m "第一次修改 a 和 b 文件" a b
2.保存第二次修改
# 假设你又对 a 文件和 b 文件进行了第二次修改
# 保存 a 文件和 b 文件的第二次修改到 stash
git stash push -m "第二次修改 a 和 b 文件" a b

3. 查看 stash 列表

你可以使用 git stash list 命令查看所有的 stash 记录。

git stash list

输出结果类似下面这样:

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

(二) 切换到指定的 stash 记录

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

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

(三)提交修改

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

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

(四)清理 stash 记录(可选)

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

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

(五)总结

借助 git stash 命令,你能够把 a 文件和 b 文件的不同修改状态保存到不同的 stash 记录中,并且可以随时应用指定的 stash 记录,从而在不同修改状态间进行切换。这样就能灵活处理多次修改,还能按需提交修改。

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

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

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

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


http://www.kler.cn/a/612690.html

相关文章:

  • 基于python的4个小游戏(免费直接使用)
  • 用Deepseek写扫雷uniapp小游戏
  • 【sql靶场】过滤绕过第26-27a关保姆级教程
  • 使用LLaMAFactory微调Qwen大模型
  • 27、web前端开发之CSS3(四)
  • Qt MSVC2017连接mysql数据库
  • 网络运维学习笔记(DeepSeek优化版) 022 HCIP-Datacom路由概念、BFD协议详解与OSPF第一课
  • mysqloracledb2 (uuid函数)
  • OpenAI 推出图像生成新突破:GPT-4o 实现图像编辑对话化
  • Charles的安装和使用教程(包含使用Charles进行抓包)
  • Linux MariaDB部署
  • 单片机串口打印调试信息①
  • 2024年认证杯SPSSPRO杯数学建模C题(第二阶段)云中的海盐全过程文档及程序
  • 抽奖的诱惑系统注册与登录功能测试报告
  • 无人机与传统巡检优劣势对比!
  • Talos-docker版本中创建 Kubernetes 集群
  • Kubenetes Service的类型(ClusterIP/NodePort/LoadBalancer/ExternalName)以及使用场景
  • ECharts折线图源码合集1(共18个自定义图表),附视频讲解与代码下载
  • java.lang包的主要类详解
  • 腾讯云使用coscli工具传输数据