Git stash

熊掌联运广告联盟 最新域名优惠/VPS优惠/免备案CDN活动

今天在一个情境下,假如我们在一个分支下做开发,但还没开发完成,master出现严重问题需要优先处理,此时我们直接git checkout master,切换到master的同时,会发现我们还没开发完分支的修改也被加到master的working directory,这当然不是我们所预想的,所以我们需要将手边的分支开发暂停并且进行储存

而此时我们可利用git add => git commit,然后就可放心至master分支进行修复问题,而后也能在回到我们开发中的分支,利用git commit  — amend对最后的一次commit进行修改。

而我们也可利用另一个较为简单的方法git stash。
首先我们在一个分支下创建一个新的文件,并且修改一个原已存在在分支中的文件,并且都无commit,利用git status查看,可发现新建文件的修改在working directory,而原文件的修改的在staging area。

Git stash-图1

利用git stash save可将我们当前还没commit的修改都暂存起来预设只会储存tracked files,如果要暂存untracked files,可透过git stash save --include-untracked

Git stash-图2

git stash list:可查看暂存区有多少commit。
git stash -h:可查看指令的提示。

Git stash-图3

git stash pop:可将暂存区的commit取出来,而架构是先进后出,可发现我们第一次所取出来的为untracked file也就是我们第二次储存的修改。

Git stash-图4

注意stash是存在于local,当我们local的环境消失或是电脑坏掉,那stash所存的修改也会消失,所以stash比较适合短时间内的保存,所以保险作法还是直接commit暂时push至远端,需要时在拉下来比较安全。

推荐:
Git cherry-pick

今天一个情境下为,我们在master创建一个有bug的文件,而后在创建一个分支(stable 1.x),此时此分支与master是同步的,而后我们在master在创建一个新的文件,此时很明显我们的分支…

Git merge&rebase

今天要来分享一个关于merge与rebase的差别。 此为两者的示意图:左为rebase,右为merge。 merge: 首先在master分支上做两次commit,然后再额外创建一个分支featur…

Git 学习笔记 (上)

Git 是一种版本控制的软件,在早期开发时,可能会透过在资料夹的命名上来做为版本控制的依据,但是 Git 就是为了解决这个问题出现,他不仅能做到版本控制,也能追蹤文件的程序码,与先前的版本来做比较是哪…