一,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命令对其不起作用