• Git -- Stash


    git stash(储藏)

    准备好项目, 然后修改某个文件.

    这时, 如果我不准备commit这个文件的话, 我需要立即修改改另外一个文件.

    为了保存这第一个变化, 就可以使用git stash命令.

    “‘stash”“可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。

    git stash save
    git stash

    可以不加save参数, 因为执行git stash 默认就带着save参数.

    可以看到没有需要commit的变化了.

    打开修改的文件, 又恢复到原来的样子了.

    然后我再做一些修改, 修改另一个文件:

    然后commit:

    现在是clean working directory.

    那么刚才的stash 怎么办呢?

    git stash apply.

    这个命令会显示出来当前的状态. 这时打开我第一次修改的文件, 发现我做出的变化又出现了.

    然后 commit即可:

    但是到现在还没完, 下面执行这个命令:

    git stash list:

    因为我们已经apply这个stash了, 所以可以把它删掉了:

    git stash drop, 它会删除最新的一个stash.

    Stash Untracked / Pop.

    git stash 只对被追踪的文件起作用.

    修改某个被追踪的文件.

    然后添加一个文件, 这个文件暂时git还没有去追踪.

    如果现在执行git stash:

    那么它只会保存被追踪文件的变化. 而未追踪的文件依然可以看到:

    现在把保存恢复:

    git stash apply:

    然后删除这个stash:

    现在有几种可选的做法:

    1. 可以把未追踪的文件添加到staging 区.

    2. 或者你仍想把这个未追踪的文件保存起来, 那么可以使用git stash 加参数, 下面就做这个:

    git stash -u

    现在就是clean working directory了.

    然后编辑另一个文件, 然后commit:

    然后我在apply之前的stash, 这次我将使用一个更直接的命令:

    git stash pop 它相当于这两个命令: git stash apply 和 git stash drop (apply并drop上一个stash).

    然后我删除z.txt. commit.

    多个Stash.

    修改某个文件, 然后执行stash, 这次加上save参数, 并指定信息:

    git stash save "xxx".

    再修改另一个文件, 并stash:

    然后再修改上面的一个文件, 并stash:

    列出stash:

    注意, 这里0表示最新的一个stash.

    查看某个stash:

    git stash show stash@{1}.

    具体恢复某一个stash:

    git stash apply stash@{1}.

    然后删除这个stash:

    git stash drop stash@{1}.

    剩下的stash的索引可能会更新一下.

    如果剩下的stash我不需要了:

    git stash clear:

    Stash到分支.

    现在项目的状态是有一个变化还没有stage:

    我再修改其他几个文件:

    我把README.md添加到staging区:

    我再添加一个新文件 z1.txt:

    现在文件的状态有3种, 等待被commit的, 没有 stage的, 未被追踪的.

    首先执行stash 所有文件:

    然后我把这个stash apply到分支上:

    git stash branch xxx分支名.

    这个过程发生了好几件事:

    1.创建了一个分支, 并切换到这个分支了

    2.apply 这个stash到这个分支

    3.删除了这个stash.

    查看状态:

    然后commit, 并合并到master分支:

    最后删除分支:

  • 相关阅读:
    转:每个架构师都应该研究下康威定律
    使用OpenShiftFQ上外网
    关系模式设计
    数据库应用系统工程过程
    数据库系统
    四种常见 Git 工作流比较
    Git 进阶指南
    C#高性能TCP服务的多种实现方式
    浮动广告
    <span></span>
  • 原文地址:https://www.cnblogs.com/cgzl/p/8628443.html
Copyright © 2020-2023  润新知