git-stash学习

背景

昨天继续部署hexo的时候发现自己使用的主题fexo在Github上有新的commit,于是想对主题进行升级。

更新仓库文件

查看fexo文件夹

1
$ tree -L 1 .
.
├── _config.yml
├── gulpfile.js
├── languages
├── layout
├── LICENSE
├── package.json
├── README.md
├── scripts
├── source
└── yarn.lock

直接使用git pull命令发现_config.yml因被修改过而引起冲突,不能直接将仓库进行pull更新,上网搜索“hexo更新主题”,发现了git stash命令。

  1. 使用git stash将修改入栈,即执行命令后_config.yml变成了该版本对应文件的最初始状态(因为我在修改_config.yml之后未进行追踪和提交,所以git stash后变成最初始状态)。

    1
    
    $ git stash
    
  2. 此时执行git status发现没有任何更改。执行git pull更新仓库。

    1
    
    $ git pull
    
  3. 执行git stash pop将已经入栈的被修改文件出栈到当前文件夹,即完成了保留_config.yml文件的修改,并更新了其他文件的效果。此时栈为空。

    1
    
    $ git stash pop
    

关于git stash

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

git stash save "test1"

作用同git stashsave会指定一个名称,drop命令可以根据名称删除对应内容。

tash@{0}: On master: test1

git stash list

查看当前stash中的内容。

git stash pop

当前stash中的最后进入的内容出栈,并应用到当前分支对应的工作目录上。 注:该命令将堆栈中最近保存的内容删除(栈是先进后出)。

git stash apply

恢复stash中的修改,但与pop不同的是,apply从栈中删除内容。

git stash drop "test1"

stash栈中删除名为"test1"的内容。

git stash clear

清除stash栈中的所有内容。

git stash show

显示stash栈中的所有内容。

插一句:解决git中文乱码

1
$ git config --global core.quotepath false

再插一句

github-production-release-asset-2e65be.s3.amazonaws.com国内是访问不了的,wgetcurl都不能下载到内容,可绑定ip试试。

52.216.20.147 github-production-release-asset-2e65be.s3.amazonaws.com

brew安装失败 #312

updatedupdated2020-05-252020-05-25