Git 使用小技巧之 Stash 命令藏储零乱分支

想要获取更多文章能够访问个人博客 - 代码无止境git

在开发的过程当中可能会常常出现下面这种状况,咱们正在开发某个功能,当前分支的内容比较乱,不太适合提交,而此时咱们须要切换到其余分支上处理一些事情。这个时候该怎么办呢?难道是将修改先备份而后丢弃修改再切换到另外的分支上?答案确定是否认的,今天咱们就来介绍如何使用git stash命令来完美解决这种窘境。bash

准备

首先咱们须要准备一个git仓库,并准备两个分支(masterdev):app

mkdir git-test

cd git-test

git init

touch README.md

git add README.md

git commit -m "第一次提交"

git checkout -b dev

复制代码

使用stash命令

在上一步,咱们已经切换到dev了,如今咱们在README.md上随便修改一点东西来模拟凌乱的分支:ui

$ git status

On branch dev

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:  README.md

no changes added to commit (use "git add" and/or "git commit -a")

复制代码

如今假如咱们急需切换到master分支上处理一些事情,因此咱们须要使用git stash来藏储dev分支上的修改。spa

git stash

复制代码

而后咱们再执行一下git status来看下dev上的状况:code

$ git status

On branch dev

nothing to commit, working tree clean

复制代码

咱们会发现dev分支变干干净净了,由于刚刚的修改已经被藏储了。那么或许你会问,咱们应该怎么查看有哪些藏储呢?当咱们在master分支上处理完事情后回到dev分支又该如何恢复咱们藏储的内容呢?首先咱们执行git stash list咱们查看全部的藏储记录:开发

$ git stash list

stash@{0}: WIP on dev: 9ad7304 第一次提交

复制代码

如何恢复呢?可使用git stash pop恢复第一条存储记录,也可使用git stash apply stash@{n}命令来恢复指定的存储记录。get

$ git stash apply stash@{0}

On branch dev

Changes not staged for commit:

  (use "git add <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:  README.md

复制代码

而后咱们就会发现刚刚的修改恢复回来了。可是此时咱们再次执行git stash list会发现刚刚恢复的藏储记录还存在,咱们须要执行git stash drop stash@{n}删掉它。博客

$ git stash drop stash@{0}

Dropped stash@{0} (8c0b9fa5bc217c7876ab825147ee76712364887e)

复制代码

再执行git stash list的时候就会发现这条藏储被删除了,固然若是咱们恢复的是栈顶的藏储记录的话我建议直接使用git stash pop命令,由于在恢复的同时会自动删除掉栈顶的藏储记录。string

相关文章
相关标签/搜索