git stash功能的使用

一,git stash的作用:

      能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录

说明:架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

         对应的源码可以访问这里获取: https://github.com/liuhongdi/

 说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,看一个git stash的例子:

root@kubuntu:/data/git/clog# git status
位于分支 dev
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
        修改:     a.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a"
root@kubuntu:
/data/git/clog# git stash 保存工作目录和索引状态 WIP on dev: 6a1ea30 e
root@kubuntu:
/data/git/clog# git status 位于分支 dev 无文件要提交,干净的工作区

三,弹出stash时发生冲突报错:如何解决?

     要解决冲突,可以通过创建新的分支来解决冲突

     即:从当前创建新分支,暂存区的代码应用到新分支,

     而堆栈中保存的stash代码恢复到原分支

    

     弹出stash代码的命令:

root@kubuntu:/data/git/clog# git stash pop
error: 您对下列文件的本地修改将被合并操作覆盖:
        a.txt
请在合并前提交或贮藏您的修改。
终止中

四,如何清除堆栈中的所有内容?

    

root@kubuntu:/data/git/clog# git stash clear

五,如何查看当前stash中的内容?

root@kubuntu:/data/git/clog# git stash list

六,stash功能使用需要注意的地方:

    如果存在还没有add到暂存区的文件

    则不能被stash,例如新增加还没做add的文件:

   看一个例子:

root@kubuntu:/data/git/clog# git status
位于分支 dev
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
        修改:     a.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
root@kubuntu:/data/git/clog# vi b.txt
root@kubuntu:/data/git/clog# git status
位于分支 dev
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
        修改:     a.txt
未跟踪的文件:
  (使用 "git add <文件>..." 以包含要提交的内容)
        b.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a"
root@kubuntu:
/data/git/clog# git stash 保存工作目录和索引状态 WIP on dev: 6a1ea30 e
root@kubuntu:
/data/git/clog# git status 位于分支 dev 未跟踪的文件: (使用 "git add <文件>..." 以包含要提交的内容) b.txt 提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

 说明:在上面的例子中:b.txt文件,因为没有被add到暂存区,

          所以stash命令对其不起作用

原文地址:https://www.cnblogs.com/architectforest/p/12323312.html