这是我参与「第三届青训营-后端场」笔记创作活动的第5篇笔记,是关于git和我实际项目开发过程中,我认为比较值得记记笔记的点,在实际的合中,尽管已经做了很好的工作划分,但是由于业务的互相调用,还是会存在冲突,所以在处理冲突时,如果自己的代码还没有写完,不值得进行提交,那么久可以用stash,这个命令非常有用,也是在实际联合开发中我经常用到 的命令,所以这里重点介绍一下这个git命令
stash的原理:
将本地没提交的内容进行缓存并从当前分支移除。缓存的数据结构为堆栈,先进后出。
git commit的内容不会被缓存, 但git add的内容会被缓存。 stash 只会操作被git追踪的文件,也就是说,如果有新增的文件,需要进行git add [文件名]让git追踪该文件,再进行stash就可以了。
stash的参数:
1、git stash / git stash save
git stash与git stash save是一样的,将没有提交的内容缓存并移除,而这条缓存名称为最新一次提交的commit的内容,如果没有本地提交则是拉远程仓库是的commit内容.
git stash save "缓存测试2" Saved working directory and index state On master: 缓存测试2
2、git stash list
返回缓存的列表
$ git stash list
stash@{0}: On master: 缓存测试2
stash@{1}: On master: 缓存测试1
3、git stash pop
将缓存堆栈中最新的缓存内容pop出来,并应用到当前分支上,且会删除堆中的该条记录。
$ git stash pop
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: nlog.config
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (895f6ee195fcc02e54f146b9249c04451be70f14)
$ git stash list
stash@{0}: On master: 缓存测试1
也可以pop指定堆栈中的某条记录。
git stash pop stash@{0}
4、git stash apply
与pop相似,但他不会在堆栈中删除这条缓存,适合在多个分支中进行缓存应用。
5、git stash drop / git stash clear
删除单个缓存
git stash drop stash@{0}
全清
git stash clear
6、git stash show
指定或最新缓存与当前分支差异。
git stash show stash@{0}
加上-p可以看详细差异。
7、git stash branch
指定或最新缓存创建分支。