Git命令小记--stash

命令简介

当我们在某个分支开发一半的时候,突然想切换到其他分支,但是又不想把进行一半的工作状态进行提交。又想后续回到这个状态。
这个时候就是使用git stash命令的时候。

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

存储当前修改。

假设你现在的工作分支是这个样子。

1
2
3
4
5
6
7
8
$ git status
On branch feature-14
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: /src/main/resources/mongodb.properties
modified: /src/main/webapp/admin/index.html

想切换分支,但是你还不想提交你正在进行中的工作;所以你要把这些变化先暂存起来。以后后续继续使用。
运行 git stash

1
2
3
$ git stash
Saved working directory and index state WIP on feature-14: e5e3dd5 feature-14: remove pnr search
HEAD is now at e5e3dd5 feature-14: remove pnr search

工作空间变得干净了,我们可以随意的切到任何一个分支。

1
2
3
$ git status
On branch feature-14
nothing to commit, working tree clean

查看stash.

1
2
3
git stash list
stash@{0}: WIP on feature-14: e5e3dd5 feature-14: remove pnr search
stash@{1}: WIP on feature-9: 7e6b84c feature-8:complete airbook all user number

重新应用stash.

你可以重新应用刚刚的暂存,所用命令为 git stash apply
如果你想应用更早的暂存,你可以通过名字指定,像这样:git stash apply stash@{1}。如果不指明,Git 默认使用最近的储藏并尝试应用它:

1
2
3
4
5
6
7
8
9
10
git stash apply
On branch feature-14
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)

modified: src/main/resources/mongodb.properties
modified: src/main/webapp/admin/index.html

no changes added to commit (use "git add" and/or "git commit -a")

删除stash

重新应用stash之后,stash仍然在栈上,如果想删除响应的stash可以执行

1
git stash drop stash@{0}

也可以运行

1
git stash pop

来重新应用暂存,同时立刻将其从堆栈中移走。

以上是日常开发中常用的git stash 指令。

-------------本文结束-------------
坚持原创技术分享,您的支持将鼓励我继续创作!
0%