一,git stash的作用:

能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录

说明:架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,看一个git stash的例子:

  1. root@kubuntu:/data/git/clog# git status
  2. 位于分支 dev
  3. 尚未暂存以备提交的变更:
  4. (使用 "git add <文件>..." 更新要提交的内容)
  5. (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
  6. 修改: a.txt
  7. 修改尚未加入提交(使用 "git add" 和/或 "git commit -a"

  8. root@kubuntu:/data/git/clog# git stash
  9. 保存工作目录和索引状态 WIP on dev: 6a1ea30 e

  10. root@kubuntu:/data/git/clog# git status
  11. 位于分支 dev
  12. 无文件要提交,干净的工作区

三,弹出stash时发生冲突报错:如何解决?

要解决冲突,可以通过创建新的分支来解决冲突

即:从当前创建新分支,暂存区的代码应用到新分支,

而堆栈中保存的stash代码恢复到原分支

弹出stash代码的命令:

  1. root@kubuntu:/data/git/clog# git stash pop
  2. error: 您对下列文件的本地修改将被合并操作覆盖:
  3. a.txt
  4. 请在合并前提交或贮藏您的修改。
  5. 终止中

四,如何清除堆栈中的所有内容?

  1. root@kubuntu:/data/git/clog# git stash clear

五,如何查看当前stash中的内容?

  1. root@kubuntu:/data/git/clog# git stash list

六,stash功能使用需要注意的地方:

如果存在还没有add到暂存区的文件

则不能被stash,例如新增加还没做add的文件:

看一个例子:

  1. root@kubuntu:/data/git/clog# git status
  2. 位于分支 dev
  3. 尚未暂存以备提交的变更:
  4. (使用 "git add <文件>..." 更新要提交的内容)
  5. (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
  6. 修改: a.txt
  7. 修改尚未加入提交(使用 "git add" 和/或 "git commit -a"
  8. root@kubuntu:/data/git/clog# vi b.txt
  9. root@kubuntu:/data/git/clog# git status
  10. 位于分支 dev
  11. 尚未暂存以备提交的变更:
  12. (使用 "git add <文件>..." 更新要提交的内容)
  13. (使用 "git checkout -- <文件>..." 丢弃工作区的改动)
  14. 修改: a.txt
  15. 未跟踪的文件:
  16. (使用 "git add <文件>..." 以包含要提交的内容)
  17. b.txt
  18. 修改尚未加入提交(使用 "git add" 和/或 "git commit -a"

  19. root@kubuntu:/data/git/clog# git stash
  20. 保存工作目录和索引状态 WIP on dev: 6a1ea30 e

  21. root@kubuntu:/data/git/clog# git status
  22. 位于分支 dev
  23. 未跟踪的文件:
  24. (使用 "git add <文件>..." 以包含要提交的内容)
  25. b.txt
  26. 提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

说明:在上面的例子中:b.txt文件,因为没有被add到暂存区,

所以stash命令对其不起作用

git stash功能的使用的更多相关文章

  1. IDEA : Git Pull Failed 解决(IDEA中使用stash功能)

    一.问题: 本地要commit代码,commit之前需pull代码,但pull提示冲突.如下 Git Pull Failed Your local changes would be overwritt ...

  2. git stash封存分支 以及关于开发新功能的处理

    有种情况,我们要修复项目的bug时,但别的分支有修改的代码,要修复的bug可能会影响(所有分支共用一个暂存区).可以单独创建一个bug分支,用于修复和提交bug,在修改前可以先stash封存分支修改的 ...

  3. Git Stash紧急处理问题,需要切分支

    在开发过程中,大家都遇到过bug,并且有些bug是需要紧急修复的. 当开发人员遇到这样的问题时,首先想到的是我新切一个分支,把它修复了,再合并到master上. 当时问题来了,你当前正在开发的分支上面 ...

  4. git stash 用法

    git stash用于将当前工作区的修改暂存起来,就像堆栈一样,可以随时将某一次缓存的修改再重新应用到当前工作区. 一旦用好了这个命令,会极大提高工作效率.   直接举例说明: 1.准备工作,首先初始 ...

  5. git stash提交PR的正确步骤&git squash技术

    1.git stash梳理 1.1git stash的克隆与同步 首先整理下git stash的逻辑是这样 在本地做出了新的修改,提交时显示当前的版本不是最新版本,这时就需要先pull一下自己代码仓库 ...

  6. Git的Bug分支----临时保存现场git stash

    软件开发中,bug就像家常便饭一样,有了bug就需要修复,在Git中,由于分支是如此的强大,所以每个bug通过一个新的分支来修复,在修复后,合并分支,然后将临时分支删除. 当你接到一个修复代号为119 ...

  7. git stash命令详解

    git stash命令用于将更改储藏在脏工作目录中. 使用语法 git stash list [<options>] git stash show [<stash>] git ...

  8. Svn Replacement For Git Stash

    svn 实现git stash类似的功能 % svn diff > WorkInProgress.txt % svn revert -R . <make changes> % svn ...

  9. git stash应用

    今天在看一个bug,之前一个分支的版本是正常的,在新的分支上上加了很多日志没找到原因,希望回溯到之前的版本,确定下从哪个提交引入的问题,但是还不想把现在的修改提交,也不希望在Git上看到当前修改的版本 ...

随机推荐

  1. pytest测试框架 -- skip跳过执行测试用例

      跳过执行测试用例 1.@pytest.mark.skip(reason=" ") -- 跳过执行测试函数 可传入一个非必须参数reason表示原因 import pytest@ ...

  2. 串(string)

    题目描述 给定一个由小写字母组成的字符串s,每次你可以删去它的一个非回文子串, 求删成空串的最小次数. 输入输出格式 输入格式: 第一行一个整数 t 表示数据组数. 每组数据第一行一个整数 n表示字符 ...

  3. SSM获取SqlSessionFactory

    1.实现类获取session //根据id 修改阈值 public int altThers(threshold threshold) { SqlSessionFactoryBuilder build ...

  4. 基于DDD+微服务的开发实战(1)

    1 DDD是什么? DDD是领域驱动设计,是Eric Evans于2003年提出的,离现在有17年. 2 为什么需要DDD 当软件越来越复杂,实际开发中,大量的业务逻辑堆积在一个巨型类中的例子屡见不鲜 ...

  5. 【python】调用sm.ms图床api接口,实现上传图片并返回url

    图床简介 sm.ms网站提供免费的图床服务.单图上传大小限制5MB,每次最多上传10张,支持多种图片链接格式和api接口调用. 获取令牌 注册账号并登录,点击User-Dashboard 点击API ...

  6. 集群实战(1):swarm安装记述

    查看主机名 hostnamectl 修改主机名 hostnamectl set-hostname xxx 关闭selinux sed -i 's/SELINUX=enforcing/#SELINUX= ...

  7. Git+Gitlab+Ansible剧本实现一键部署动态网站(5)

    项目前言 之前已经写了一篇关于git和ansible的博客<Git+Gitlab+Ansible剧本实现一键部署Nginx–技术流ken>.关于git,gitliab,ansible在我以 ...

  8. Hashmap,Set,Map,List,ArrayList的区别

    表格: 类型 默认容量 加载因子[1] 扩容增量 底层实现 是否安全及同步方式 Vector 10 1 2倍 Object数组 安全,synchronized ArrayList 10 1 1.5倍( ...

  9. SpringBoot框架:配置文件application.properties和application.yml的区别

    一.格式 1.application.properties格式: server.port=8080 server.servlet.context-path=/cn spring.datasource. ...

  10. nohup命令重定向标准输出和错误输出

    命令:command > /dev/null  2>&1 & 输出到/dev/null表示输出重定向到黑洞,即输出内容不打印到屏幕上,null是/dev下空设备文件. &g ...