社区编辑申请
注册/登录
鲜为人知但功能强大的 Git 技术
系统 Linux
储藏(Stashing)是一种鲜为人知但功能强大的 Git 技术,即使您还没有准备好提交它,它也能保证代码的安全。

Stashing 允许您保留对存储库所做更改的副本,而无需创建提交。

如果您正在切换上下文,这非常有用,尤其是当您在同一个项目的不同错误或任务之间来回切换时。

git stash 的基本操作

在处理并行工作时,您可以使用 git stash 来简化您的工作流程。想象一下,您正在处理一项长期运行的任务,并在本地工作副本中进行了更改。然后,出现紧急情况,您必须立即处理。

stashing 更改的标准工作流程是:

  1. 进行本地更改
  2. 存储本地更改
  3. <其他作品>
  4. 重新应用隐藏的更改

当您使用git stash [push]命令存储更改时,git 将重置为 HEAD。然后,您可以继续处理您需要的任何事情,提交到存储库,就好像您从未进行过原始更改一样。

一旦你首先完成了任何让你偏离轨道的事情,使用git stash pop应用你的更改并将它们从存储中删除。您还可以使用 git stash apply 应用您的更改并将它们保存在存储中。如果您想快速将更改应用到多个分支,这可能很有用。

使用多个 Stash

如果您真的很忙,您可能会发现自己同时处理多项任务,并且您可能需要将它们全部隐藏起来。别担心, git stash 就是为此而构建的。

每次使用 git stash push 时,都会保存另一组更改。使用git stash list显示您已隐藏的所有内容。你会看到有点像这样的东西:

stash@{0}: WIP on main: 2fba62e first commit
stash@{1}: WIP on main: 2fba62e first commit

这些消息不是很有用,但是您可以通过在存储时添加自定义消息来为自己留下一些线索:

git stash push -m "third"

当您现在列出时,您会看到您的自定义消息:

stash@{0}: On main: third
stash@{1}: WIP on main: 2fba62e first commit

显示记录变更的差异

要找出存储中发生的变化,请使用 git stash show。如果没有进一步的参数,它将显示最新存储的差异摘要,如下所示:

$ git stash show
README.md | 3 +++
1 file changed, 3 insertions(+)

您还可以传递存储 id 来查询特定条目:

git stash show stash@{0}

从 Stash 创建一个分支

您可能会认为存储中的更改非常重要,以至于它们应该放在自己的分支中。如果是这样,请使用分支命令从存储中创建一个新分支:

git stash branch

同样,默认情况下这将适用于最近的存储,但如果需要,您可以提供存储 id。Git 从存储库中的同一点创建新分支作为存储。然后它将存储中的更改应用到您的工作副本。

清理 Stash

没有“git unstash”命令。如果要删除存储条目,请使用 drop:

git stash drop

同样,这默认为最新的,但您可以提供一个存储 ID。如果您决定要摆脱 Stash 的所有内容,请使用以下命令:

git stash clear

使用 git stash 进行临时轻量级提交

Git 存储库远没有完整存储库强大。但是它们本身仍然提供许多有用的功能。如果您经常发现自己需要在工作中切换分支,那就请使用 stashes。

Stashing 只是 git 的一小部分,它是一个提供很多东西的程序。

责任编辑:庞桂玉 来源: Linux公社
相关推荐

2022-06-12 06:48:34

2022-06-07 10:09:42

新技术人工智能5G

2022-06-16 17:02:49

微软智能云混合云Azure

2022-06-20 09:01:23

2022-06-15 08:25:07

Python天气数据可视化分析

2022-06-09 18:04:46

网络攻击网络安全

2022-06-01 14:35:39

gitjmeter脚本

2022-05-31 10:30:16

元宇宙数字人高清渲染

2022-06-01 17:47:24

运维监控系统

2022-06-07 11:16:51

云原生人工智能运维

2022-06-23 14:03:26

混合ITCIOIT管理工具

2022-06-09 10:12:01

网络安全人工智能威胁监测

2022-06-09 09:27:16

前端行业生存

2022-06-16 09:22:28

图数据库图数据数据库

2022-06-24 15:13:17

区块链数字资产加密货币

2022-06-07 09:59:21

网络安全安全漏洞

2022-06-06 15:18:41

开源GiteaDrone

2022-06-16 15:42:16

攻击面管理ASM

2022-06-02 15:28:42

网络安全信息通信数据保护

2022-06-24 14:07:06

机器人供应链人工智能

同话题下的热门内容

微软 Windows 11 Build 22000.778 (KB5014668) 发布:新增搜索亮点,带来大量修复内容用这些开源工具在 Linux 上编辑 PDF 文件面对验证码 iOS 16给出了最完美的解决方案谷歌 Chrome 浏览器 103 正式版发布:页面加载速度更快,支持本地字体访问、Web 共享 AVIF 文件Docker Compose:搭建开发环境的好方式为什么用C语言编写操作系统?在 Linux 上玩电子游戏的三种方式为什么命令行在 Linux 生态系统中如此重要

编辑推荐

你应该知道的八款国产操作系统为什么你可能想要略过Ubuntu 17.04?HarmonyOS 2.0鸿蒙第二期开发者Beta公测申请指南让后端开发情何以堪?前端程序猿薪资大曝光谷歌“断供”华为!中国真写不出操作系统?
我收藏的内容
点赞
收藏

51CTO技术栈公众号