Git -- Stash

简介: git stash(储藏) 准备好项目, 然后修改某个文件. 这时, 如果我不准备commit这个文件的话, 我需要立即修改改另外一个文件. 为了保存这第一个变化, 就可以使用git stash命令. “‘stash”“可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。

git stash(储藏)

准备好项目, 然后修改某个文件.

这时, 如果我不准备commit这个文件的话, 我需要立即修改改另外一个文件.

为了保存这第一个变化, 就可以使用git stash命令.

“‘stash”“可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。

git stash save
git stash

 

可以不加save参数, 因为执行git stash 默认就带着save参数.

可以看到没有需要commit的变化了.

打开修改的文件, 又恢复到原来的样子了.

然后我再做一些修改, 修改另一个文件:

然后commit:

现在是clean working directory.

那么刚才的stash 怎么办呢?

git stash apply.

这个命令会显示出来当前的状态. 这时打开我第一次修改的文件, 发现我做出的变化又出现了.

然后 commit即可:

但是到现在还没完, 下面执行这个命令:

git stash list:

因为我们已经apply这个stash了, 所以可以把它删掉了:

git stash drop, 它会删除最新的一个stash.

 

Stash Untracked / Pop.

git stash 只对被追踪的文件起作用.

修改某个被追踪的文件.

然后添加一个文件, 这个文件暂时git还没有去追踪.

如果现在执行git stash:

那么它只会保存被追踪文件的变化. 而未追踪的文件依然可以看到:

现在把保存恢复:

git stash apply:

然后删除这个stash:

现在有几种可选的做法:

1. 可以把未追踪的文件添加到staging 区.

2. 或者你仍想把这个未追踪的文件保存起来, 那么可以使用git stash 加参数, 下面就做这个:

git stash -u

现在就是clean working directory了.

然后编辑另一个文件, 然后commit:

然后我在apply之前的stash, 这次我将使用一个更直接的命令:

git stash pop 它相当于这两个命令: git stash apply 和 git stash drop (apply并drop上一个stash).

然后我删除z.txt. commit.

 

多个Stash.

修改某个文件, 然后执行stash, 这次加上save参数, 并指定信息:

git stash save "xxx".

再修改另一个文件, 并stash:

然后再修改上面的一个文件, 并stash:

列出stash:

注意, 这里0表示最新的一个stash.

查看某个stash:

git stash show stash@{1}.

具体恢复某一个stash:

git stash apply stash@{1}.

然后删除这个stash:

git stash drop stash@{1}.

剩下的stash的索引可能会更新一下.

如果剩下的stash我不需要了:

git stash clear:

 

Stash到分支.

现在项目的状态是有一个变化还没有stage:

我再修改其他几个文件:

我把README.md添加到staging区:

我再添加一个新文件 z1.txt:

现在文件的状态有3种, 等待被commit的, 没有 stage的, 未被追踪的.

首先执行stash 所有文件:

然后我把这个stash apply到分支上:

git stash branch xxx分支名.

这个过程发生了好几件事:

1.创建了一个分支, 并切换到这个分支了

2.apply 这个stash到这个分支

3.删除了这个stash.

查看状态:

然后commit, 并合并到master分支:

最后删除分支:

 

下面是我的关于ASP.NET Core Web API相关技术的公众号--草根专栏:

目录
相关文章
|
13天前
|
开发工具 git
|
2月前
|
测试技术 开发工具 文件存储
Git Stash
【8月更文挑战第27天】
48 6
|
2月前
|
存储 小程序 安全
【技巧】git stash用的好,切换分支随便搞
本文详细介绍了 Git 中的 `git stash` 命令,帮助你在切换分支时临时保存未提交的更改。通过实际操作示例,展示了如何使用 `git stash` 的各种命令,如 `save`、`list`、`apply` 等。无论你是初学者还是有一定经验的开发者,都能从中受益。
41 0
【技巧】git stash用的好,切换分支随便搞
|
5月前
|
存储 开发工具 git
(详解踩坑)GIT版本回滚git stash、git reset、git reset --hard、git revert
(详解踩坑)GIT版本回滚git stash、git reset、git reset --hard、git revert
460 0
|
开发工具 git
百度搜索:蓝易云【git常用命令stash详细解释。】
使用 `stash`命令可以在处理多个分支切换或者保存临时修改时非常有用。你可以通过 `stash`命令保存当前工作目录的修改,切换到其他分支或者应用其他更改,然后再返回并应用之前保存的stash。这样可以确保你的工作目录始终保持干净,并且不会丢失任何重要的修改。
263 4
|
开发工具 git C++
【Git】stash 仅贮存指定文件的修改
如何使用 git stash 贮存单个或多个文件
2549 0
|
缓存 开发工具 git
Git学习笔记(二) git stash
Git学习笔记(二) git stash
1015 0
|
开发工具 git
需求开发到一半需要改别的分支的bug该怎么办呢?(git stash 和 git commit)
需求开发到一半需要改别的分支的bug该怎么办呢?(git stash 和 git commit)
158 0
需求开发到一半需要改别的分支的bug该怎么办呢?(git stash 和 git commit)
|
存储 开发工具 git
git stash误使用drop删掉本地保存,再恢复代码一次记录
git stash误使用drop删掉本地保存,再恢复代码一次记录
1023 0
git stash误使用drop删掉本地保存,再恢复代码一次记录
|
存储 开发工具 git
git stash , git fetch 和 git clear
git stash , git fetch 和 git clear
112 0