返回顶部
首页 > 资讯 > 精选 >git stash 命令的应用
  • 297
分享到

git stash 命令的应用

2023-06-15 14:06:38 297人浏览 安东尼
摘要

这篇文章主要介绍“git stash 命令的应用”,在日常操作中,相信很多人在git stash 命令的应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”git stash 命令的应用”的疑惑有所帮助!接下来

这篇文章主要介绍“git stash 命令的应用”,在日常操作中,相信很多人在git stash 命令的应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”git stash 命令的应用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

版本控制是软件开发人员日常生活中不可分割的一部分。很难想象有哪个团队在开发软件时不使用版本控制工具。同样也很难想象有哪个开发者没有使用过(或没有听说过)Git。在  2018 年 Stackoverflow 开发者调查中,74298 名参与者中有 87.2% 的人 使用 Git 进行版本控制。

Linus Torvalds 在 2005 年创建了 Git 用于开发 linux 内核。本文将介绍 git stash 命令,并探讨一些有用的暂存变更的选项。本文假定你对 Git 概念 有基本的了解,并对工作树、暂存区和相关命令有良好的理解。

为什么 git stash 很重要?

首先要明白为什么在 Git 中暂存变更很重要。假设 Git 没有暂存变更的命令。当你正在一个有两个分支(A 和  B)的仓库上工作时,这两个分支已经分叉了一段时间,并且有不同的头。当你正在处理 A 分支的一些文件时,你的团队要求你修复 B  分支的一个错误。你迅速将你的修改保存到 A 分支(但没有提交),并尝试用 git checkout B 来签出 B 分支。Git 会立即中止了这个操作,并抛出错误:“你对以下文件的本地修改会被该签出覆盖……请在切换分支之前提交你的修改或将它们暂存起来。”

在这种情况下,有几种方法可以启用分支切换:

  • 在分支 A 中创建一个提交,提交并推送你的修改,以修复 B 中的错误,然后再次签出 A,并运行 git reset HEAD^ 来恢复你的修改。

  • 手动保留不被 Git 跟踪的文件中的改动。

第二种方法是个馊主意。第一种方法虽然看起来很传统,但却不太灵活,因为保存未完成工作的修改会被当作一个检查点,而不是一个仍在进行中的补丁。这正是设计 git stash 的场景。

git stash 将未提交的改动保存在本地,让你可以进行修改、切换分支以及其他 Git 操作。然后,当你需要的时候,你可以重新应用这些存储的改动。暂存是本地范围的,不会被 git push 推送到远程。

如何使用 git stash

下面是使用 git stash 时要遵循的顺序:

  1. 鸿蒙官方战略合作共建——HarmonyOS技术社区

  2. 将修改保存到分支 A。

  3. 运行 git stash

  4. 签出分支 B。

  5. 修正 B 分支的错误。

  6. 提交并(可选)推送到远程。

  7. 查看分支 A

  8. 运行 git stash pop 来取回你的暂存的改动。

git stash 将你对工作目录的修改存储在本地(在你的项目的 .git 目录内,准确的说是 /.git/refs/stash),并允许你在需要时检索这些修改。当你需要在不同的上下文之间切换时,它很方便。它允许你保存以后可能需要的更改,是让你的工作目录干净同时保持更改完整的最快方法。

如何创建一个暂存

暂存你的变化的最简单的命令是 git stash

$ git stashSaved working directory and index state WIP on master; d7435644 Feat: configure graphql endpoint

默认情况下,git stash 存储(或称之为“暂存”)未提交的更改(已暂存和未暂存的文件),并忽略未跟踪和忽略的文件。通常情况下,你不需要暂存未跟踪和忽略的文件,但有时它们可能会干扰你在代码库中要做的其他事情。

你可以使用附加选项让 git stash 来处理未跟踪和忽略的文件:

  • git stash -u 或 git stash --includ-untracked 储存未追踪的文件。

  • git stash -a 或 git stash --all 储存未跟踪的文件和忽略的文件。

要存储特定的文件,你可以使用 git stash -p 或 git stash -patch 命令:

$ git stash --patchdiff --git a/.gitignore b/.gitignoreindex 32174593..8d81be6e 100644--- a/.gitignore+++ b/.gitignore@@ -3,6 +3,7 @@ # dependencies node_modules/ /.pnp+f,fmfm .pnp.js  # testing(1/1) Stash this hunk [y,n,q,a,d,e,?]?

列出你的暂存

你可以用 git stash list 命令查看你的暂存。暂存是后进先出(LIFO)方式保存的:

$ git stash liststash@{0}: WIP on master: d7435644 Feat: configure graphql endpoint

默认情况下,暂存会显示在你创建它的分支和提交的顶部,被标记为 WIP。然而,当你有多个暂存时,这种有限的信息量并没有帮助,因为很难记住或单独检查它们的内容。要为暂存添加描述,可以使用命令 git stash save <description>

$ git stash save "remove semi-colon from schema"Saved working directory and index state On master: remove semi-colon from schema $ git stash liststash@{0}: On master: remove semi-colon from schemastash@{1}: WIP on master: d7435644 Feat: configure graphql endpoint

检索暂存起来的变化

你可以用 git stash apply 和 git stash pop 这两个命令来重新应用暂存的变更。这两个命令都会重新应用最新的暂存(即 stash@{0})中的改动。apply 会重新应用变更;而 pop 则会将暂存的变更重新应用到工作副本中,并从暂存中删除。如果你不需要再次重新应用被暂存的更改,则首选 pop

你可以通过传递标识符作为最后一个参数来选择你想要弹出或应用的储藏:

$ git stash pop stash@{1}

$ git stash apply stash@{1}

清理暂存

删除不再需要的暂存是好的习惯。你必须用以下命令手动完成:

  • git stash clear 通过删除所有的暂存库来清空该列表。

  • git stash drop <stash_id> 从暂存列表中删除一个特定的暂存。

检查暂存的差异

命令 git stash show <stash_id> 允许你查看一个暂存的差异:

$ git stash show stash@{1}console/console-init/ui/.graphqlrc.yml        |   4 +-console/console-init/ui/generated-frontend.ts | 742 +++++++++---------console/console-init/ui/package.JSON          |   2 +-

要获得更详细的差异,需要传递 --patch 或 -p 标志:

$ git stash show stash@{0} --patchdiff --git a/console/console-init/ui/package.json b/console/console-init/ui/package.jsonindex 755912b97..5b5af1bd6 100644--- a/console/console-init/ui/package.json+++ b/console/console-init/ui/package.json@@ -1,5 +1,5 @@ {- "name": "my-usepatternfly",+ "name": "my-usepatternfly-2",  "version": "0.1.0",  "private": true,  "proxy": "Http://localhost:4000"diff --git a/console/console-init/ui/src/AppNavHeader.tsx b/console/console-init/ui/src/AppNavHeader.tsxindex a4764d2f3..da72b7e2b 100644--- a/console/console-init/ui/src/AppNavHeader.tsx+++ b/console/console-init/ui/src/AppNavHeader.tsx@@ -9,8 +9,8 @@ import { CSS } from "@patternfly/React-styles"; interface IAppNavHeaderProps extends PageHeaderProps {- toolbar?: React.ReactNode;- avatar?: React.ReactNode;+ toolbar?: React.ReactNode;+ avatar?: React.ReactNode;} export class AppNavHeader extends React.Component&lt;IAppNavHeaderProps&gt;{  render()

签出到新的分支

你可能会遇到这样的情况:一个分支和你的暂存中的变更有分歧,当你试图重新应用暂存时,会造成冲突。一个简单的解决方法是使用 git stash branch <new_branch_name stash_id> 命令,它将根据创建暂存时的提交创建一个新分支,并将暂存中的修改弹出:

$ git stash branch test_2 stash@{0}Switched to a new branch 'test_2'On branch test_2Changes not staged for commit:(use "git add <file>..." to update what will be committed)(use "git restore <file>..." to discard changes in working directory)modified: .graphqlrc.ymlmodified: generated-frontend.tsmodified: package.jsonno changes added to commit (use "git add" and/or "git commit -a")Dropped stash@{0} (fe4bf8f79175b8fbd3Df3c4558249834ecb75cd1)

在不打扰暂存参考日志的情况下进行暂存

在极少数情况下,你可能需要创建一个暂存,同时保持暂存参考日志(reflog)的完整性。这些情况可能出现在你需要一个脚本作为一个实现细节来暂存的时候。这可以通过 git stash create 命令来实现;它创建了一个暂存条目,并返回它的对象名,而不将其推送到暂存参考日志中:

$ git stash create "sample stash"63a711cd3c7f8047662007490723e26ae9d4acf9

有时,你可能会决定将通过 git stash create 创建的暂存条目推送到暂存参考日志:

$ git stash store -m "sample stash testing.." "63a711cd3c7f8047662007490723e26ae9d4acf9"$ git stash liststash @{0}: sample stash testing..

到此,关于“git stash 命令的应用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: git stash 命令的应用

本文链接: https://lsjlt.com/news/280606.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • git stash 命令的应用
    这篇文章主要介绍“git stash 命令的应用”,在日常操作中,相信很多人在git stash 命令的应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”git stash 命令的应用”的疑惑有所帮助!接下来...
    99+
    2023-06-15
  • git stash(储藏)的用法总结
    当在一个分支的开发工作未完成,却又要切换到另外一个分支进行开发的时候,除了commit原分支的代码改动的方法外,我觉得git stash是一个更加便捷的选择。  ...
    99+
    2024-04-02
  • 如何正确的使用git stash 和unstash
    这篇文章将为大家详细讲解有关如何正确的使用git stash 和unstash,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。VCS-->git -->stash这个时候针对需求1...
    99+
    2023-06-06
  • 如何使用Git Stash进行暂存
    在使用Git进行版本控制的过程中,我们经常需要对代码进行暂存,以便在未来恢复使用。Git提供了一个非常便捷的功能,就是“Git Stash”命令。使用该命令可以在不提交更改的情况下将更改暂时保存起来。但是,在使用这个功能的过程中,我们也可能...
    99+
    2023-10-22
  • 怎么使用Git Stash进行暂存
    本文小编为大家详细介绍“怎么使用Git Stash进行暂存”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用Git Stash进行暂存”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、Git Stash基本...
    99+
    2023-07-05
  • git 常用命令
    1. 新建代码库# 在当前目录新建一个Git代码库 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-n...
    99+
    2023-05-30
    git linux 命令大全
  • git常用命令
    1、第一次初始化 git initgit add .git commit -m ‘first commit’git remote add origin git@github.com:帐号名/仓库名.gitgit pull origin m...
    99+
    2023-10-29
    常用命令 git
  • Git常用命令的使用
    目录Git基础要点Git常用命令Git分支服务器上的Git分布式Git版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统. 关于版本控制分为三种:本地版本控制系统...
    99+
    2023-05-19
    Git常用命令 Git 命令
  • Git命令git-reset怎么使用
    这篇文章主要介绍了Git命令git-reset怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Git命令git-reset怎么使用文章都会有所收获,下面我们一起来看看吧。git-reset的作用是重置当前...
    99+
    2023-07-05
  • Git 常用命令整理
    前言   这里就不介绍 git 了,表一看到命令行就怕怕,常用的命令也就这些,基本满足 99% 以上的项目需求,非常实用。 正文   一、常用 git 命令     1.1  git clone <...
    99+
    2022-06-04
    常用命令 Git
  • Git常用命令介绍
    常用 Git 命令清单。几个专用名词的译名如下。 Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库 一、新...
    99+
    2024-04-02
  • Git常用命令汇总
    1、配置自己的用户名和邮箱 git config --global user.name "用户名" //加引号 git config --global user.email "邮箱地...
    99+
    2024-04-02
  • git clone命令怎么用
    本篇内容介绍了“git clone命令怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!git clone我们使用 git cl...
    99+
    2023-06-17
  • git init命令怎么用
    本篇内容主要讲解“git init命令怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“git init命令怎么用”吧!git initGit 使用 git init 命令...
    99+
    2023-06-17
  • Git命令怎么使用
    今天小编给大家分享一下Git命令怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。常用 Git 命令清单。几个专用名词的...
    99+
    2023-06-29
  • Git常用命令总结
    这篇文章主要讲解了“Git常用命令总结”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Git常用命令总结”吧!前言  这里就不介绍 git 了,表一看到命令行就怕怕,常用的命令也就这些,基本满...
    99+
    2023-06-09
  • 怎么使用git命令
    今天小编给大家分享一下怎么使用git命令的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。安装Git在开始使用Git之前,您需要...
    99+
    2023-07-05
  • 有哪些常用的Git命令
    这篇文章主要介绍“有哪些常用的Git命令”,在日常操作中,相信很多人在有哪些常用的Git命令问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些常用的Git命令”的疑惑有所帮...
    99+
    2024-04-02
  • 常用的Git命令有哪些
    本篇内容主要讲解“常用的Git命令有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“常用的Git命令有哪些”吧!           &nbs...
    99+
    2023-06-20
  • git中的pick命令怎么用
    本篇内容介绍了“git中的pick命令怎么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在git中,pick常与cherry配合使用,“c...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作