Git stash用法

git stash用于将当前工作区的修改暂存起来,就想堆栈一样,可以随时将某一次缓存的修改再重新应用到当前工作区。正确的使用可以极大的提高工作效率。

eg:

1.先初始一个测试git仓

随便一个目录,进入操作:

$ git init

创建一个文件:

$ touch test

$ git add .(add后跟的.表示“把工作时的所有变化提交到暂存区,包括文件内容修改(modified)以及新文件(new),但不包括被删除的文件”)

$ git commit -m "先将创建的文件add"

2.暂存当前修改内容(git stash),必须把修改的文件git add后才可以git stash

现在test中插入文字,如下:

$ vim test(输入i开始编辑,Esc退出编辑,:wq保存退出文本。注意输入法要在英文状态,不然不识别会闪屏

成功后,考虑修改记录。但修改后发现不合适,想回退比较麻烦,此时git stash应用场景出现:将修改暂存起来

3.弹出修改内容(git stash pop)

重新编辑后的内容,不合适需要回退,可以用git stash pop命令,弹出刚才的内容(注意先用git checkout . 清空工作区)

注意:git stash pop弹出成功后,暂存列表里面就没有了,如果当前工作区不干净,弹出时有冲突,则暂存列表会继续保留修改

4.可以保持多个修改(针对需要保存的文件进行同样的操作)

eg:对文本,开始第一次输入尝试,保存后录入“第二次输入尝试”,再保存进行“第三次输入尝试”

5.查看保存的内容列表(git stash list)

eg:保存了文本1,文本2操作。可以通过git stash list查看保存内容列表

stash@{0}和stash@{1},需要使用git stash show stash@{X}命令来查看,其中‘X’表示列表号;

stash@{0}对应“文本2”的修改, stash@{1}对应“文本1”的修改

入栈的修改,其代号为0,循环命名。

6.应用任意一次修改到当前目录(git apply stash@{x})

如果现在又想回到“文本1”的修改,怎么办呢?在工作区干净的情况下,要使用git stash apply stash@{1}。
 注意这时不能使用git stash pop, 它将最栈顶,即stash@{0}的修改弹出来,而func1现在已经是stash@{1}了。
虽然func1的修改已经被弹出应用到当前工作区,其修改内容还继续保留在暂存列表,并未丢弃。
  当然,我们可以使用git stash drop stash@{1}来丢掉stash@{1}

7.保存时打上标记(git stash save)

$ git stash save "标记文本3"
原文地址:https://www.cnblogs.com/yangjingkang/p/9947744.html