`
songkang666
  • 浏览: 103069 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Git step by step 11 之 git stash

    博客分类:
  • GIT
 
阅读更多
介绍:
        git stash 作用是备份当前“工作目录”的内容,将该备份保存到Git栈中,并从最近的一次提交中读取相关内容,让工作区保持和上次提交的内容一致。 man git stash将其解释为两步,第一步是保存当前工作目录中的内容到一个新的stash,第二步执行 git reset --hard。
        git stash pop:从Git栈中读取最近一次保存的内容,恢复工作目录中的相关内容。
        git stash list:显示Git栈内的所有备份,进一步利用 git stash pop XXX 读取Git栈内中某一指定的备份。
        git stash clear:清空Git栈。
        此外还有,git stash drop,git stash save等

适用场合:
        使用git的时候,我们往往使用branch解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们往往会把完成一半的代码 commit提交到本地仓库,然后切换分支去修改bug,改好之后再切换回来。这样的话往往log上会有大量不必要的记录。其实如果我们不想提交完成一半或者不完善的代码,但是却不得不去修改一个紧急Bug,那么使用'git stash'就可以将你当前未提交到本地(和服务器)的代码推入到Git的栈中,这时候你的工作区间和上一次提交的内容是完全一样的,所以你可以放心的修 Bug,等到修完Bug,提交到服务器上后,再使用'git stash apply'将以前一半的工作应用回来。也许有的人会说,那我可不可以多次将未提交的代码压入到栈中?答案是可以的。当你多次使用'git stash'命令后,你的栈里将充满了未提交的代码,这时候你会对将哪个版本应用回来有些困惑,'git stash list'命令可以将当前的Git栈信息打印出来,你只需要将找到对应的版本号,例如使用'git stash apply stash@{1}'就可以将你指定版本号为stash@{1}的工作取出来,当你将所有的栈都应用回来的时候,可以使用'git stash clear'来将栈清空。

        对当前工作目录进行git stash之后,在进行git stash pop的时候,也有可能会像 git merge一样出现冲突。
        例如:工作目录中有一test.txt,在master分支下,对test.txt的第一行进行了修改。此时,要先修复另一bug,所以要 git stash。由于修改该bug时,也需要修改test.txt的第一行,这就与git stash之前在test.txt上有了冲突。当进行git stash pop的时候,会提示有冲突,需要手动进行修改。

        看上去完全可以利用git branch来代替git stash,但正如前面“适用场合”中说的,利用 git stash 可以减少不必要的记录,使得查看log时,会更省心。
        git stash 主要处理未commit时的现场保存,如果已经commit的了,branch更适合一些。
        总的来说,git很灵活,正是由于它太灵活,以致于会有一些相互覆盖的功能,例如,若工作目录、暂存区以及本地数据目录中有一文件(其余都相同),在三个区域中内容各不相同,git reset --hard,会将三个区域中的这个文件都与本地数据目录中的这个文件相同,但用git checkout HEAD -- file,也会使三个区域中的文件保持一致。再如,git reset --hard <branch> 与 git checkout <branch> 的作用效果又是一样的。这正是导致一些命令看似相同,不容易让人区分的原因。


more:
Git Stash用法
git-stash vs. git-branch
分享到:
评论

相关推荐

    Git Learn Version Control with Git A step-by-step Ultimate beginners Guide epub

    Git Learn Version Control with Git A step-by-step Ultimate beginners Guide 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Git Learn Version Control with Git A step-by-step Ultimate beginners 无水印pdf

    Git Learn Version Control with Git A step-by-step Ultimate beginners Guide 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn...

    Ruby-BigStash增强版的gitstash可以给每个stash命名

    增强版的 git stash,可以给每个 stash 命名,可以通过指定的名字恢复 stash,也可以获取当前名字和 stash 的映射关系列表

    Learn Version Control With Git A step-by-step course for the complete beginner

    Learn Version Control With Git A step-by-step course for the complete beginner(中文)。亚马逊接近满分书籍,中文版。图文并茂。学习Git的好资料。 从官网一页一页的复制过来的,花了不少时间。

    svn-stash:就像git stash,但是对于Subversion

    就像git stash命令一样,但是对于Subversion。 如果您不懂git,则应该阅读 Svn-stash允许您隐藏不想立即提交的更改。 在某些情况下,这可能会更有用。 为什么? 我喜欢git,我认为它应该用在任何程序员开始的新...

    Git Learn Version Control with Git A step-by-step Ultimate beginners Guide azw3

    Git Learn Version Control with Git A step-by-step Ultimate beginners Guide 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    vscode-gitstash:为VS Code添加了额外的Git隐藏功能

    gitstash.stash 使用自定义选项生成存储。 stash only使用stash only来生成简单的隐藏。 使用“ Keep index可以存储,但要保留添加到索引中的所有更改(保留它们)。 如果要隐藏未跟踪的文件,请使用“ Include ...

    git stash参数介绍

    git stash 用于暂存工作区未提交的内容,便于在同时开发多个分支需要切换时保存当前分支进度。 list 语法 git stash list [] ,与git log功能类似,列出储藏列表,options 参数可以参考git log的参数 show 语法 git ...

    Git教程by廖雪峰.pdf

    因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人发指,就是简单得一笔带过,或者,只支离破碎地介绍Git的某几个命令,还有直接从Git手册粘贴帮助...

    git 视频教程

    git视频教程.4.7.Git 命令 - git log、git stash、git tag.mp4 git视频教程.5.1.Git 命令 - git fetch.mp4 git视频教程.5.2.Git 命令 - git pull.mp4 git视频教程.5.3.Git 命令 - git push.mp4 git视频教程.5.4.Git ...

    Learn Version Control with Git: A step-by-step course for the complete

    "Learn Version Control with Git" is a beginner-friendly step-by-step course. The book doesn't require a deep technical background. Instead, it's aimed at beginners of version control and/or ...

    前端大厂最新面试题-git stash.docx

    前端大厂最新面试题-git stash.docx

    git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记

    git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git笔记git...

    Git中文学习手册 Git入门

    1 起步 1 1 关于版本控制 1 2 Git 简史 1 3 Git 基础 1 4 安装 Git 1 5 初次运行 Git 前的配置 ...2 Git 基础 ...4 11 小结 5 分布式 Git 6 Git 工具 7 自定义 Git 8 Git 与其他系统 9 Git 内部原理

    kivihub#kivihub-blog#14.深入git_stash1

    一、简介1)执行git stash命令,发现只会把已跟踪的文件暂存起来:2)然后执行git stash pop,发现之前的暂存区的状态会丢失:三、总结由于之前没

    Git-2.30.2-64-bit,git最稳定版本版本可兼容win11

    git最稳定版本版本可兼容win11

    git工具git工具

    git工具git工具git工具git工具git工具git工具git工具git工具git工具git工具

    Git详解教程

    Git详解之一 Git起步.doc Git详解之二 Git基础.doc Git详解之三 Git分支.doc Git详解之四 服务器上的Git.doc Git详解之五 分布式Git.doc Git详解之六 Git工具.doc Git详解之七 自定义Git.doc Git详解之八 Git与其他...

    Git教程By廖雪峰.pdf

    因为我在学习Git的过程中,买过书,也在网上Google了一堆Git相关的文章和教程,但令人失望的是,这些教程不是难得令人发指,就是简单得一笔带过,或者,只支离破碎地介绍Git的某几个命令,还有直接从Git手册粘贴帮助...

    Git-1.9.0 git

    git

Global site tag (gtag.js) - Google Analytics