Git stash临时存储工作

今天正在Coding,组长来了个临时BUG修复。功能已经Coding到一半,这时候想起之前看过的Git使用stash保存工作。然后就去了解了一下相关,并做一下记录。

1、What

stash指令有什么用?
stash 是 git 的常用命令之一,用于管理临时工作,包括新增保存,查看,移除,等等。

2、How

这里总结一下常用姿势。

  • 所有命令
git stash list []
git stash show []
git stash drop [-q|--quiet] []
git stash ( pop | apply ) [--index] [-q|--quiet] []
git stash branch  []
git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
         [-u|--include-untracked] [-a|--all] [-m|--message ]]
         [--] […​]]
git stash clear
git stash create []
git stash store [-m|--message ] [-q|--quiet] 
  • 存储
git stash 
git stash push -m "Im stash log" //添加备注的方式

还有文章介绍使用 git stash save -m "log" ,但是官方文档说deprecated了,推荐使用 push

  • 查看
git stash list  //显示所有的stash
git stash show  stash@{id}  //查看某个stash的详细情况,所有文件的状态
Git stash临时存储工作_第1张图片
  • 恢复
git stash pop  //恢复最近的一次
git stash pop stash@{id}  //恢复某一次stash
  • 移除
git stash drop stash@{id}  //移除某一stash
git stash clear  //清除所有stash

3、Note

  1. 不会保存未track的文件,比如新建了文件,但未add
  2. 每次最新stash的记录,下标都为0,之前的stash下标+1,所以恢复指定stash的时候注意了。
  3. 恢复可能会产生冲突。官方原文说明:Applying the state can fail with conflicts; in this case, it is not removed from the stash list. You need to resolve the conflicts by hand and call git stash drop manually afterwards.
    恢复是使用auto-meger进行合并的,当meger产生冲突时,pop操作会恢复工作内容,并标记冲突,但是不移除stash list的记录。当你解决冲突后,需要手动drop移除掉stash list的记录。当你解决冲突后,需要手动drop移除掉stash。
    这样能够完全保证用户的工作内容不会受到冲突影响。若你担心有什么问题,或者不想这样解决冲突,你可以完全抛弃本次pop,直接reset回到之前stash时的节点,再pop出来,这样就不会有冲突问题。在本次工作完成后,push提交时候再进行冲突处理。

4、Thanks and More

官方文档
官方文档中文翻译

你可能感兴趣的:(Git stash临时存储工作)