[Git]活用Git栈暂存你的代码

如果你的代码没有提交,去远端拉取代码时,经常会碰到"Your local changes would be overwritten by merge"这个提示。但是问题在于,这时候你的代码并没有开发完,不太想去去提交代码。这些事情在git里面都想到了,这篇文章就来介绍一下git stash的用法。

概述

我们开了一个分支,在这个分支上面写自己代码,这时候发现别的分支有一个bug,于是先commit自己未完成的代码,切到别的分支,把那个分支的代码修复完成后,再切换回自己的分支继续开发。这很明显导致了一个问题:在我的功能点开发完成后,我的git上多了很多没必要的提交记录

其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急bug,那么使用git stash就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中。前提是我们的代码没有进行commit,哪怕执行了add也没关系。

意思就是把当前分支所有没有commit 的代码先暂存起来,这个时候你再执行git status你会发现当前分支很干净,几乎看不到任何改动,你的代码改动也看不见了,但其实是暂存起来了。执行git stash list你会发现此时暂存区已经有了一条记录。这个时候你可以切换会其他分支,赶紧把bug修复好,然后发布。之后一切都解决了,你再切换回来继续做你之前没做完的功能。

git stash相关命令

git stash list [<options>]
git stash show [<options>] [<stash>]
git stash drop [-q|--quiet] [<stash>]
git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
git stash branch <branchname> [<stash>]
git stash [push [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet]
	     [-u|--include-untracked] [-a|--all] [-m|--message <message>]
	     [--] [<pathspec>…​]]
git stash clear
git stash create [<message>]
git stash store [-m|--message <message>] [-q|--quiet] <commit>

常用git stash命令:
git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash save ‘message’:备份工作区内容,同时添加备注信息。
git stash save -a “messeag” :没有加 -a 这个option选项,代码开发可能是在原代码上进行修改的。而对于在项目里加入了代码新文件的开发来说,-a选项才会将新加入的代码文件同时放入暂存区。
git stash apply: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。但是不会将该stash记录删除
git stash drop: 把最近的一条stash记录删除。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复,同时会删除这条stash记录,相当于git stash apply和git stash drop一起执行了。
git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
git stash clear: 清空Git栈,原来存储的所以stash的节点都消失了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值