Git stash临时存储工作

作者: zii4914 | 来源:发表于2018-02-02 16:48 被阅读29次

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

    1、What

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

    2、How

    这里总结一下常用姿势。

    • 所有命令
    git stash list [<options>]
    git stash show [<stash>]
    git stash drop [-q|--quiet] [<stash>]
    git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
    git stash branch <branchname> [<stash>]
    git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
             [-u|--include-untracked] [-a|--all] [-m|--message <message>]]
             [--] [<pathspec>…​]]
    git stash clear
    git stash create [<message>]
    git stash store [-m|--message <message>] [-q|--quiet] <commit>
    
    • 存储
    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 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临时存储工作

        本文链接:https://www.haomeiwen.com/subject/zkqezxtx.html