- Git基础概念
- Git历史(简史)
- Git基础和原理
- Git安装设置
- Git使用前配置
- Git快速入门
- Git工作流程
- Git创建存储库
- Git克隆操作
- Git执行变更操作
- Git查看更改
- Git提交更改
- Git推送(push)操作
- Git更新操作
- Git隐藏(Stash)操作
- Git移动操作
- Git重命名操作
- Git删除操作
- Git修正错误
- Git标签操作
- Git补丁操作
- Git管理分支
- Git处理冲突
- Git不同平台换行符问题
- Git远程操作详解
-
Git常用命令
- git config命令
- git help命令
- git init命令
- git add命令
- git clone命令
- git status命令
- git diff命令
- git commit命令
- git reset命令
- git rm命令
- git mv命令
- git branch命令
- git checkout命令
- git merge命令
- git mergetool命令
- git log命令
- git stash命令
- git tag命令
- git fetch命令
- git pull命令
- git push命令
- git remote命令
- git submodule命令
- git show命令
- git shortlog命令
- git describe命令
- git rebase命令
Git隐藏(Stash)操作
假设您正在为产品新的功能编写/实现代码,当正在编写代码时,突然出现软件客户端升级。这时,您必须将新编写的功能代码保留几个小时然后去处理升级的问题。在这段时间内不能提交代码,也不能丢弃您的代码更改。 所以需要一些临时等待一段时间,您可以存储部分更改,然后再提交它。
在Git中,隐藏操作将使您能够修改跟踪文件,阶段更改,并将其保存在一系列未完成的更改中,并可以随时重新应用。
$ git status On branch master Your branch is up-to-date with 'origin/master'. 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: main.py no changes added to commit (use "git add" and/or "git commit -a")
现在,要切换分支以进行客户升级,但不想提交一直在做的工作; 那么可以把当前工作的改变隐藏起来。 要将一个新的存根推到堆栈上,运行git stash
命令。
$ git stash Saved working directory and index state WIP on master: ef07ab5 synchronized with the remote repository HEAD is now at ef07ab5 synchronized with the remote repository
现在,工作目录是干净的,所有更改都保存在堆栈中。 现在使用git status
命令来查看当前工作区状态。
$ git status On branch master Your branch is up-to-date with 'origin/master'. nothing to commit, working directory clean
现在,可以安全地切换分支并在其他地方工作。通过使用git stash list
命令来查看已存在更改的列表。
$ git stash list stash@{0}: WIP on master: ef07ab5 synchronized with the remote repository
假设您已经解决了客户升级问题,想要重新开始新的功能的代码编写,查找上次没有写完成的代码,只需执行git stash pop
命令即可从堆栈中删除更改并将其放置在当前工作目录中。
$ git status -s Administrator@MY-PC /D/worksp/sample (master) [jerry@CentOS project]$ git stash pop
上述命令将产生以下结果:
$ git stash pop On branch master Your branch is up-to-date with 'origin/master'. 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: main.py no changes added to commit (use "git add" and/or "git commit -a") Dropped refs/stash@{0} (e713780380632c142ed5833a9087aca883a826fa) Administrator@MY-PC /D/worksp/sample (master) $ git status On branch master Your branch is up-to-date with 'origin/master'. 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: main.py no changes added to commit (use "git add" and/or "git commit -a")
可以看到,工作区中修改的文件(main.py
)又显示了。现在我们就可以继续编写上次编写了未完成的代码。