- Git 入门
- Git - 首页
- Git - 版本控制
- Git - 基本概念
- Git - 命令行
- Git - 安装
- Git - 首次设置
- Git - 基本命令
- Git - 获取帮助
- Git - 工具
- Git - 速查表
- Git - 术语
- Git 分支
- Git - 简述分支
- Git - 创建新分支
- Git - 切换分支
- Git - 分支与合并
- Git - 合并冲突
- Git - 管理分支
- Git - 分支工作流程
- Git - 远程分支
- Git - 跟踪分支
- Git - 变基
- Git - 变基与合并
- Git - 合并提交
- Git 操作
- Git - 克隆操作
- Git - 打标签操作
- Git - 别名操作
- Git - 提交操作
- Git - 暂存操作
- Git - 移动操作
- Git - 重命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - 修补操作
- Git - 差异操作
- Git - 状态操作
- Git - 日志操作
- Git - HEAD 操作
- Git - origin master
- Git 撤销
- Git - 撤销更改
- Git - 检出
- Git - 恢复
- Git - 重置
- Git - 恢复操作
- Git - Rm
- Git - 切换操作
- Git - Cherry-pick
- Git - 修改
- Git 在服务器上
- Git - 本地协议
- Git - 智能 HTTP 协议
- Git - 哑 HTTP 协议
- Git - SSH 协议
- Git - Git 协议
- Git - 在服务器上获取 Git
- Git - 设置服务器
- Git - 守护进程
- Git - GitWeb
- Git - GitLab
- Git - 第三方托管选项
- 分布式 Git
- Git - 分布式工作流
- Git - 为项目做贡献
- Git - 维护项目
- 自定义 Git
- Git - 配置
- Git - 钩子
- Git - 属性
- Git - Init
- Git - Commit
Git 暂存
git stash 命令用于在不提交的情况下保存工作,通过临时存储工作目录中尚未准备好提交的更改。
这有助于我们在活动之间切换或暂时搁置未完成的修改,而无需堆积提交历史。
它允许我们撤销自上次提交以来在索引和工作目录中所做的所有更改,将我们的工作目录恢复到其原始状态。
主要特点
临时保存工作 - 暂存和未暂存的更改都可以临时保存。
多个暂存 - 可以保存多组更改,并以任意顺序重新应用。
暂存列表 - 可以一次查看所有暂存更改的列表。
应用暂存 - 稍后可以使用apply和pop选项应用暂存的更改。git stash pop在应用更改后会删除暂存。
暂存特定更改 - 只能暂存更改的一部分。
暂存默认使用“WIP on branchname...”标签创建,但我们可以添加更具信息性的语句。
可以使用 reflog 表示法(stash@{1}、stash@{2.hours.ago}等)检索旧的暂存,最新的暂存保存在refs/stash中。
此外,可以通过索引stash@{n}访问暂存,其中{n}是暂存编号。
命令
暂存更改的通用命令是git stash。
git stash
push
命令git stash push删除索引和工作目录中最近的修改,并将它们存储在一个新的暂存中。
我们可以选择向暂存添加详细的<message>以指示其中包含的内容。
删除push限制非选项参数以避免意外暂存,但允许快速快照。
命令git stash -p允许交互式选择要暂存的修改;它是git stash push -p的快捷方式。
可以在--之后放置路径规范组件,以更清楚地说明要暂存哪些文件或修改。
save
命令git stash save已弃用,应替换为git stash push。
git stash save
与git stash push相反,git stash save不支持指定单个文件(路径规范)。
传递给git stash save的任何其他输入都将连接起来以生成暂存消息,而不是路径规范。
list
运行git stash list将显示当前所有保存的暂存条目。
git stash list
每个暂存条目按顺序命名为stash@{n},其中stash@{0}表示最新的暂存。
它显示创建每个暂存时正在使用的分支名称。
每个暂存条目都包含作为其基础的提交的简要摘要。
show
git stash show命令显示暂存条目中记录的更改。
git stash show
默认情况下,它显示更改摘要(diffstat),但使用<diff-options>,它可以使用git diff支持的任何格式显示实际更改。
控制统计信息和补丁显示默认行为的配置变量包括stash.showStat和stash.showPatch。
显示暂存更新时,stash.showIncludeUntracked设置控制是否默认启用--include-untracked。
apply
命令git stash apply将暂存中的更改应用于当前的工作树和索引(暂存区)。
git stash apply
它不会像git stash pop那样从暂存列表中删除暂存。
我们可以使用任何类似于git stash push或git stash create生成的暂存的提交,或者通过提供其名称(stash@{n})来指定特定的暂存条目。
要更安静地操作并减少输出冗余,请使用-q或--quiet。
branch
从创建<stash>的提交开始,创建一个名为<branchname>的新分支。
git stash branch
使用存储的修改更新工作树和新分支的索引。
当<stash>以stash@{<revision>}格式输入时,应用后会删除该暂存。
非常适合快速分支带有暂存的更改,尤其是在由于冲突导致简单的git stash apply变得复杂时。
clear
git stash clear命令将删除暂存中的所有条目。
git stash clear
这些条目在删除后容易被剪切,可能无法恢复。
drop
git stash drop命令将从暂存条目列表中删除一个暂存记录。
git stash drop
要抑制确认消息,请将其与-q或--quiet选项结合使用。
create
命令git stash create生成一个名为暂存条目的普通提交对象,并在不将其保存到 ref 命名空间的情况下返回其对象名称。
git stash create
与git stash push相比,此功能使用频率较低,主要用于脚本编写目的。
store
git stash store命令通过将使用git stash create创建的暂存(一个悬空合并提交)存储到暂存 ref 中来修改暂存 reflog。
git stash store
通常情况下,git stash push更适合于生成和存储暂存。
此命令主要用于脚本编写目的,不直接使用。
选项
git stash命令支持以下选项
-a
--all
当与git stash push和git stash save结合使用时,-a或--all选项将暂存所有更改,包括暂存、修改和未跟踪的文件,包括通常被忽略的文件。
它还使用git clean在暂存后清理未跟踪的文件。
-u
--include-untracked
--no-include-untracked
-u / --include-untracked - 当与git stash push或git stash save结合使用时,将暂存所有更改、暂存和未跟踪的文件,包括通常被忽略的文件。
然后使用git clean清理它们。
当与git stash show结合使用时,在暂存条目的差异中显示未跟踪的文件。
--no-include-untracked - 与-u相反,此命令防止在使用上述命令时在差异中显示或暂存未跟踪的文件。
--only-untracked
仅显示暂存条目中的未跟踪文件作为差异的一部分;仅限于git stash show命令。
--index
当与git stash pop和git stash apply命令结合使用时,它会尝试将修改重新应用到索引(暂存区)以及工作树。
-k
--keep-index
--no-keep-index
当与git stash push或git stash save结合使用时,选项-k / --keep-index :- 仅暂存未暂存的更新,同时保留已添加到索引(暂存区)的所有更改。
与-k相反,当与上述命令结合使用时,--no-keep-index会暂存所有修改,包括已在索引中的修改。
git stash临时暂存工作目录中的所有更改。可以在需要时重新应用暂存的更改。