打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
git stash 详解

git stash 详解

时间 2014-03-26 11:16:55 William Sang
主题 Git

需求分析

人和电脑一样,会遇到中断,需要保存现在的上下文转而去处理其他更紧急的事情。我们在使用git的时候也会遇到这样的情况。当在需要紧急处理一个bug时,工作区内容又没有完成,不适合提交,想暂存起来。

方案实施

git提供了git stash命令来解决这样的需求。下面我们做一个完整实验来体验一下:

生成测试环境

// 初始化仓库,进行一次提交# git init stash-test# cd stash-test && echo 'hello'> readme# git add . && git commit -m "init"// 修改工作区和暂存区# echo 'need to be stashed' >> readme# git add readme// 查看此时工作区和版本库区别# git diff HEADdiff --git a/readme b/readmeindex ce01362..55d6c28 100644--- a/readme+++ b/readme@@ -1 +1,2 @@ hello+need to be stashed

执行stash及恢复

// 暂存当前状态# git stash// 查看当前工作区和版本库区别# git diff HEAD==> 此时什么都没有输出,说明工作区被重置为HEAD指向内容了// 显示已暂存列表# git stash liststash@{0}: WIP on master: 440e976 init// 恢复暂存区和工作区进度# git stash pop --index stash@{0}// 查看工作区和版本库区别# git diff HEADdiff --git a/readme b/readmeindex ce01362..55d6c28 100644--- a/readme+++ b/readme@@ -1 +1,2 @@ hello+need to be stashed

哒哒~~之前的工作又回来啦

命令详解

注:

  •  []方括号中内容为可选,[<stash>]里面的stash代表进度的编号形如:stash@{0}, <>尖括号内的必填

git stash  对当前的暂存区和工作区状态进行保存。
git stash list  列出所有保存的进度列表。
git stash pop [--index] [<stash>] 恢复工作进度

--index 参数:不仅恢复工作区,还恢复暂存区<stash> 指定恢复某一个具体进度。如果没有这个参数,默认恢复最新进度如:以下命令恢复编号为0的进度的工作区和暂存区# git stash pop --index stash@{0}

git stash [save message] [-k|--no-keep-index] [--patch]

这是git stash保存进度的完整命令形式使用save可以对进度添加备注# git stash save "这是保存的进度"现在执行list,会发现后面会出现自定义的被合租# git stash liststash@{0}: On master: 这是保存的进度-k和--no-keep-index指定保存进度后,是否重置暂存区--patch 会显示工作区和HEAD的差异,通过编辑差异文件,排除不需要保存的内容。和git add -p命令类似

git stash apply [--index] [<stash>] 不删除已恢复的进度,其他同git stash pop
git stash drop [<stash>] 删除某一个进度,默认删除最新进度
git stash clear 删除所有进度
git stash branch <branchname> <stash> 基于进度创建分支

git stash 详解

时间 2014-03-26 11:16:55 William Sang
主题 Git

需求分析

人和电脑一样,会遇到中断,需要保存现在的上下文转而去处理其他更紧急的事情。我们在使用git的时候也会遇到这样的情况。当在需要紧急处理一个bug时,工作区内容又没有完成,不适合提交,想暂存起来。

方案实施

git提供了git stash命令来解决这样的需求。下面我们做一个完整实验来体验一下:

生成测试环境

// 初始化仓库,进行一次提交# git init stash-test# cd stash-test && echo 'hello'> readme# git add . && git commit -m "init"// 修改工作区和暂存区# echo 'need to be stashed' >> readme# git add readme// 查看此时工作区和版本库区别# git diff HEADdiff --git a/readme b/readmeindex ce01362..55d6c28 100644--- a/readme+++ b/readme@@ -1 +1,2 @@ hello+need to be stashed

执行stash及恢复

// 暂存当前状态# git stash// 查看当前工作区和版本库区别# git diff HEAD==> 此时什么都没有输出,说明工作区被重置为HEAD指向内容了// 显示已暂存列表# git stash liststash@{0}: WIP on master: 440e976 init// 恢复暂存区和工作区进度# git stash pop --index stash@{0}// 查看工作区和版本库区别# git diff HEADdiff --git a/readme b/readmeindex ce01362..55d6c28 100644--- a/readme+++ b/readme@@ -1 +1,2 @@ hello+need to be stashed

哒哒~~之前的工作又回来啦

命令详解

注:

  •  []方括号中内容为可选,[<stash>]里面的stash代表进度的编号形如:stash@{0}, <>尖括号内的必填

git stash  对当前的暂存区和工作区状态进行保存。
git stash list  列出所有保存的进度列表。
git stash pop [--index] [<stash>] 恢复工作进度

--index 参数:不仅恢复工作区,还恢复暂存区<stash> 指定恢复某一个具体进度。如果没有这个参数,默认恢复最新进度如:以下命令恢复编号为0的进度的工作区和暂存区# git stash pop --index stash@{0}

git stash [save message] [-k|--no-keep-index] [--patch]

这是git stash保存进度的完整命令形式使用save可以对进度添加备注# git stash save "这是保存的进度"现在执行list,会发现后面会出现自定义的被合租# git stash liststash@{0}: On master: 这是保存的进度-k和--no-keep-index指定保存进度后,是否重置暂存区--patch 会显示工作区和HEAD的差异,通过编辑差异文件,排除不需要保存的内容。和git add -p命令类似

git stash apply [--index] [<stash>] 不删除已恢复的进度,其他同git stash pop
git stash drop [<stash>] 删除某一个进度,默认删除最新进度
git stash clear 删除所有进度
git stash branch <branchname> <stash> 基于进度创建分支

git stash 详解

时间 2014-03-26 11:16:55 William Sang
主题 Git

需求分析

人和电脑一样,会遇到中断,需要保存现在的上下文转而去处理其他更紧急的事情。我们在使用git的时候也会遇到这样的情况。当在需要紧急处理一个bug时,工作区内容又没有完成,不适合提交,想暂存起来。

方案实施

git提供了git stash命令来解决这样的需求。下面我们做一个完整实验来体验一下:

生成测试环境

// 初始化仓库,进行一次提交# git init stash-test# cd stash-test && echo 'hello'> readme# git add . && git commit -m "init"// 修改工作区和暂存区# echo 'need to be stashed' >> readme# git add readme// 查看此时工作区和版本库区别# git diff HEADdiff --git a/readme b/readmeindex ce01362..55d6c28 100644--- a/readme+++ b/readme@@ -1 +1,2 @@ hello+need to be stashed

执行stash及恢复

// 暂存当前状态# git stash// 查看当前工作区和版本库区别# git diff HEAD==> 此时什么都没有输出,说明工作区被重置为HEAD指向内容了// 显示已暂存列表# git stash liststash@{0}: WIP on master: 440e976 init// 恢复暂存区和工作区进度# git stash pop --index stash@{0}// 查看工作区和版本库区别# git diff HEADdiff --git a/readme b/readmeindex ce01362..55d6c28 100644--- a/readme+++ b/readme@@ -1 +1,2 @@ hello+need to be stashed

哒哒~~之前的工作又回来啦

命令详解

注:

  •  []方括号中内容为可选,[<stash>]里面的stash代表进度的编号形如:stash@{0}, <>尖括号内的必填

git stash  对当前的暂存区和工作区状态进行保存。
git stash list  列出所有保存的进度列表。
git stash pop [--index] [<stash>] 恢复工作进度

--index 参数:不仅恢复工作区,还恢复暂存区<stash> 指定恢复某一个具体进度。如果没有这个参数,默认恢复最新进度如:以下命令恢复编号为0的进度的工作区和暂存区# git stash pop --index stash@{0}

git stash [save message] [-k|--no-keep-index] [--patch]

这是git stash保存进度的完整命令形式使用save可以对进度添加备注# git stash save "这是保存的进度"现在执行list,会发现后面会出现自定义的被合租# git stash liststash@{0}: On master: 这是保存的进度-k和--no-keep-index指定保存进度后,是否重置暂存区--patch 会显示工作区和HEAD的差异,通过编辑差异文件,排除不需要保存的内容。和git add -p命令类似

git stash apply [--index] [<stash>] 不删除已恢复的进度,其他同git stash pop
git stash drop [<stash>] 删除某一个进度,默认删除最新进度
git stash clear 删除所有进度
git stash branch <branchname> <stash> 基于进度创建分支

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Git 使用的简单汇总
活灵活现用Git
git questions
git repo
关于 Git 和Github ,你所不知道的十件事
鲜为人知的 GitHub 使用技巧
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服