Git中stash和stage的差别

对于初学者来说,git中stash和stage两个命令的单词有些相似,有可能会弄混。其实二者是两个完全不同的概念。

1、stash是git中的一个命令。git stash的作用是把工作区(必须是工作区中已经被git追踪到的文件)和索引中的内容暂时存到一个堆上。而且这个堆是和分支不相关的。切换分支后,依然可以看到并使用。

2、stage是git中的一个区域。如下图所示。

可能你也发现了,staging area不就是index么,的确是的。下面是从国外一个网站上找到一段话:

The staging area is a file, generally contained in your Git directory, that stores information about what will go into your next commit. Its technical name in Git parlance is the “index”, but the phrase “staging area” works just as well.

(from Git - Book

### 使用 Git Stash 保存未提交的更改 当工作目录中的文件处于修改状态但尚未准备好提交时,可以使用 `git stash` 来临时保存这些更改。这允许切换到其他分支处理紧急任务或其他工作,而不会丢失当前的工作进度。 #### 创建一个新的存储 要创建新的存储并清理工作区: ```bash git stash push -m "描述信息" ``` 此命令会将所有已跟踪文件的状态存入栈中,并恢复仓库至最近一次提交的状态[^4]。 如果只想暂存部分改动,则可以在执行上述指令前通过交互模式添加特定变更到索引区域(即stage),之后再调用`git stash`: ```bash git add . git stash --keep-index ``` 这里`--keep-index`选项意味着仅隐藏那些已经加入缓存区的内容,而不影响其余未标记的部分[^1]。 #### 查看现有存储列表 为了查看之前所做的所有存储记录及其备注说明,可输入如下命令获取历史日志: ```bash git stash list ``` 每条目都带有唯一标识符用于后续操作指定某次具体储存项。 #### 应用某个存储 应用最顶部的一个stash(默认行为): ```bash git stash apply ``` 对于非最新位置上的项目来说,需附加其编号作为参数传递给该函数: ```bash git stash apply stash@{n} ``` 其中{n}代表目标对象在整个队列里的序号,从0开始计数。 需要注意的是,默认情况下apply动作并不会移除所使用的那层快照;若希望同步完成这两步操作的话,请改用pop方法代替之。 #### 删除不再需要的存储 一旦确认某些版本的数据确实无用了,就可以安全地将其丢弃掉以免占用过多空间资源: 单个删除: ```bash git stash drop stash@{n} ``` 清空全部: ```bash git stash clear ``` 以上就是关于如何利用Git Stash功能来管理中途产生的零碎变动的一些基本介绍实践指南。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值