今天我们来研究一个git 命令:'git stash'。(下面的内容是我参考资料然后根据自己的理解写的,如果有错误的地方,希望多多指教改正,共同进步,不胜感激!)
一,git环境的搭建1,下载git安装。2,然后建一个文件夹 gitest。3,进入gitest文件夹,右键 'Git Bash' 然后弹出git命令行窗口,如图所示:
二,git 权限设置
1)git 加密基于密匙--在本地创建一对密钥(公有密钥:id_rsa.pub、私有密钥:id_rsa),把共有密钥放在需要访问的服务器上,如粘贴id_rsa.pub(id_rsa.pub文件)的字符串内容至你的github账户中的SSH Keys中,这样就建立了本地、远程认证关系。当向服务器发送请求时,如git push origin master,推送主分支到远程仓库。会通过你发送过来的共有密钥和服务器上的共有密钥进行比较,如果两个密钥一致则服务器验证通过。 如果没有权限 如下图所示:
2)如何设置共有密匙 1,首先生成共有密匙 方法如图所示:
2),拷贝共有密匙的字符串内容到你的github上面,具体位置 -登录github 'https://github.com/MichaelDuanH' -点击图像 在下拉框中 点击setting,如下图所示
3),在左边的菜单中 'Personal settings' 选择菜单 SSH and GPG keys,点击 New SSH key,任意起一个名字,把共有密匙贴进去,如下图所示:
共有密匙设置成功,如下图所示:
三,测试更改提交项目
在开始之前 首先来了解一下什么是暂缓区? 暂存区(stage, index),暂存区根本不是一个区(从底层来看),暂存区只是一个 index文件,用来记录仓库里的文件和工作区里的文件这两者之间的对应关系(所谓的“跟踪”).文件.git/index 实际上就是一个包含文件索引的目录树,像是一个虚拟的工作区。在这个虚拟工作区的目录树中,记录了文件名、文件的状态信息(时间戳、文件长度等),文件的 内容并不存储其中,而是保存在 Git 对象库(.git/objects)中,文件索引建立了文件和对象库中对象实体之间的mapping。 1,下面这是一个前端的静态的网页,目录结构如下图所示
-安装npm,参考: http://jingyan.baidu.com/article/a17d528506d7f58098c8f2b0.html -安装 http-server npm install -g http-server -启动http-server 如下图所示: -启动项目 http://127.0.0.1:8080/
项目启动如下所示
-更改index.html页面,将 ‘梦禅’更名为 ‘men chan’
突然发现我不想改这个index文件了,我想改package.json文件,然后我又不想删掉index里面的内容,这个时候 git stash 就开始起作用了 git stash: 备份当前的工作区的内容(index修改的内容),将当前的工作区内容保存到Git栈中。 首先确认index文件没有提交 git status
这个时候我不想改index.html的内容,等改完package.json文件之后再改动index.html,但是又不想删除index.html里面的已经改动的内容,这个时候 git stash就可以起到作用。 git stash
改动package.json 加了一个lists对象,如图所示
添加json文件到暂存区并且提交
git push 提交成功
package.json文件提交之后,我现在想继续处理我的index文件,并且提交git stash list 查看我把哪些没有提交的文件push到git栈中,如图所示
git stash apply stash@{#} 可以将你指定版本号为stash@{#}的工作内容取出来,继续编缉之前没有提交的文件。当前的index.html显示红色 代表没有添加到暂存区内,也可以理解为是没有提交的文件。同时也可以使用 git stash pop来恢复所有没有放到git栈中的未提交的文件。
注:('git stash clear'将栈清空。)
git stash pop 全部恢复
添加提交文件如图所示
代码提交成功如图所示
进入github仓库,查看文件已经提交,如图所示