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