跳到主要内容

Git 工作区代码临时存储

· 阅读需 3 分钟
Hanasaki

有时需要提交一次代码,但是有一部分新写上的代码还是半成品,又不舍得删除。或者在切换分支时工作目录和暂存区里那些还没有被提交的修改,它可能会和即将检出的分支产生冲突从而阻止 Git 切换到该分支。

解决方式

git stash 可以解决这个问题。贮藏(stash)会处理工作目录的脏的状态,即跟踪文件的修改与暂存的改动,然后将未完成的修改保存到一个栈上,而你可以在任何时候重新应用这些改动。

git stashgit stash push:将当前工作区未追踪的文件和已追踪但被修改过的文件,压入贮藏栈。此时可以切换分支,或着干其他的事情了。干完之后,将贮藏的内容恢复出来即可。

git stash list:查看贮藏栈内容。

git stash apply:将贮藏栈中最顶层的,也就是最新加入的数据,恢复出来。也可以恢复指定内容,例如:git stash apply stash@{2}。恢复之后,贮藏的内容并没有被删除,此时可以用 git stash drop stash@{2} 删除它。或者可以在这之前直接使用 git stash pop 应用并删除。

从贮藏创建一个分支

如果贮藏了一些工作,过了段时间,重新应用时出问题了,或者说出现冲突了。可以运行 git stash branch <branchname> 以你指定的分支名创建一个新分支,将会检出贮藏工作时所在的提交,并重新在那应用工作,然后在应用成功后丢弃贮藏。