有时,你想切换分支,但是当前项目上还有未完成的任务,你不想对这个做到一半的项目进行提交,那么此时可以使用 git stash ,它可以让你切换分支前,不用将半成品提交到当前分支。
` 通常, stash 表示“将某物安全地存放在隐蔽的地方”。
` git stash 可以让你不用提交也不用删除修改,暂时安全地保存数据( 默认包括工作树和集结区 ) 到某个贮藏地,让工作树回到干净的状态,以栈的方式加入到stash list.
git stash 操作示例如图:
git stash apply
通过 git stash apply 命令,你可以 apply 不同的 stashed works 到当前工作树,但是不会删除这些 stashed works 。
如果想 apply 某个早期的 stash ,可以通过名字指定它,比如:git stash apply --index stash@{1}
如果你不指定某个 stash , git 会选择最近的 stash 来 apply(栈顶)
`Apply a stash 可以在任意的分支上,并不要求必须 apply 到一个干净的工作树,或者必须 apply 到原来贮存的分支上。
`你可以在一个分支上保存一个 stash ,切换到另一个分支,然后尝试 apply 这些修改。当你 apply a stash 时,工作树中也可能有已修改和未提交的文件
`如果存在不能 cleanly 地 apply 的东西, git 会让你手动合并冲突。
git stash apply操作示例如图:
git stash 的其他用法
`git stash drop 丢掉栈顶的 stash
`git stash drop stash@{1} 指定要丢掉的stash
`git stash clear 用于移除所有的 stashes 。
操作如图:
`git stash –all 可以贮藏所有的工作树和集结区,包括未被跟踪的文件
`git stash show 显示 stash 中的修改,作为 stash 内容与创建 stash 时的 commit 之间的区别。
操作如图:
`git stash pop : 如果想在 apply 某个 stash 时同时将它 drop 掉,可以使用 pop 命令
操作如图:
`git stash push 贮藏部分文件 : 例如工作树有几个已修改的文件,有 1 个文件不想提交(已经集结),那么可以使用 git stash push fileName 来暂存这个文件。
操作如图: