美文网首页
stash 操作暂存区

stash 操作暂存区

作者: 黄刚刚 | 来源:发表于2019-06-13 11:09 被阅读0次

    涉及命令:git stash、stash list、git stash apply、git stash drop

    git stash:添加临时暂存(暂存当前工作区状态,并将工作区"HEAD"指针指向位于工作区的上一次提交)

    stash list:列出临时暂存的列表

    git stash apply:恢复临时暂存(恢复临时暂存会与当前的工作区状态合并)

    git stash drop:删除临时暂存

    操作例子:
    [root@localhost hgg]# git status

    # 位于分支 master

    无文件要提交,干净的工作区

    步骤解释:查看当前工作区状态是一个干净的工作区

    [root@localhost hgg]# git branch dev

    [root@localhost hgg]# git checkout dev

    切换到分支 'dev'

    步骤解释:创建并检出一个"dev"分支

    [root@localhost hgg]# touch a.php

    [root@localhost hgg]# git add .

    步骤解释:在"dev"分支中新建一个"a.php"文件 , 并add添加到版本控制,但是还未提交,

    这时我们临时有个bug要处理,"a.php"的功能还没做好所以不能提交到版本库,下面先去创建分支处理bug

    [root@localhost hgg]# git branch bug

    [root@localhost hgg]# git checkout bug

    A      a.php

    切换到分支 'bug'

    [root@localhost hgg]# ls

    a.php

    步骤解释:创建并检出一个"bug"分支,但是"dev"分支还未提交的"a.php"文件也在当前的新分支中,这显然不是我们想要的,所以就需要使用git stash 命令操作暂存区了

    [root@localhost hgg]#

    [root@localhost hgg]# git checkout dev

    A      a.php

    切换到分支 'dev'

    步骤解释:切换回到"dev"分支

    [root@localhost hgg]# git stash

    Saved working directory and index state WIP on dev: 40f08cc 删除所有文件

    HEAD 现在位于 40f08cc 删除所有文件

    步骤解释:使用git stash命令把工作区的更改单独存储起来,通过提示的信息可以看到,现在我们的工作区"HEAD"指针位于工作区的上一次提交(本工作区上一次提交是删除了所有文件,所以当前工作区应该没有文件了)

    [root@localhost hgg]# git stash list

    stash@{0}: WIP on dev: 40f08cc 删除所有文件

    步骤解释:使用git stash list命令查看存储区的存储列表

    [root@localhost hgg]# git status

    # 位于分支 dev

    无文件要提交,干净的工作区

    [root@localhost hgg]# ls

    步骤解释:查看工作区状态和目录的文件列表,确实回到了上一次的提交状态,这个时候回去解决bug先

    [root@localhost hgg]# git checkout bug

    切换到分支 'bug'

    [root@localhost hgg]# ls

    [root@localhost hgg]# touch bug.php

    [root@localhost hgg]# git add .

    [root@localhost hgg]# git commit -m "bug修复完成"

    [root@localhost hgg]# git checkout dev

    切换到分支 'dev'

    [root@localhost hgg]# ls

    步骤解释:切换到"bug"分支,修复完bug后提交,再切换到"dev"分支,

    [root@localhost hgg]# git merge bug

    [root@localhost hgg]# ls

    bug.php

    步骤解释:合并"bug"分支就可以看到"bug"分支的文件了,当然也可以不合并,我们要继续我们"dev"分支之前的"a.php"文件的工作了

    [root@localhost hgg]# git stash apply

    # 位于分支 dev

    # 要提交的变更:

    #  (使用 "git reset HEAD <file>..." 撤出暂存区)

    #

    #      新文件:    a.php

    #

    [root@localhost hgg]# ls

    a.php  bug.php

    步骤解释:使用git stash apply命令从临时暂存区中恢复工作区状态,再次查看,可以看到,a.php文件又出现了,所以可以继续之前的工作了

    [root@localhost hgg]# git stash list

    stash@{0}: WIP on dev: 40f08cc 删除所有文件

    步骤解释:从临时暂存区中恢复工作区状态后临时暂存还是存在

    [root@localhost hgg]# git stash drop

    丢弃了 refs/stash@{0} (04a1d0e71bdf876d0e2154031ef5c8785f69b5a0)

    [root@localhost hgg]# git stash list

    步骤解释:删除临时暂存

    相关文章

      网友评论

          本文标题:stash 操作暂存区

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