git 学习笔记

Git 知识梳理

git init

git init 这个命令,会把当前目录,变成一个git管理的目录;这个命令,会创建一个.git文件夹,这个文件夹就是git存放所有文件历史版本的目录

git add

git add这个命令,可以把目录中的文件,加入到git的管理范围内,比如常用的 git add .,这个.,不要小看了,代表当前目录下的所有文件,包括目录里面一层层的所有文件

git commit

  • git commit,这个指令相对简单。commit指令的用途,就是把使用git add加入到git staging里面的所有更改,打包成一个新的历史,并且会为这个新生成的历史包生成一个HASH码,这个HASH码就是这个commit的id。
  • git要求每个commit,必需有一个注释,如果运行git commit时候,没有额外的参数,则git会调取系统默认的文本编辑器(通常是vi)来让用户编辑提交注释
  • 我们也可以通过 git commit -m '在这里写注释' 来直接提交
  • git add . 和 git commit 可以合并为一个指令, git commit -am 'comment here'
  • 但是注意这个里面的坑,还是跟git add .一样,这个并不会提交要删除的文件。
  • lastly,万一,刚刚commit就发现有个东西有遗漏,或者发现commit的东西有问题,可以立即更改一下,git add .之后,执行 git commit --amend,这样可以修复刚刚提交的这个版本
  • 这样并不会生成两个历史,只会保留最后一次的历史。但是注意,这个操作不要在push之后做

git status

  • 当你需要更新代码库,需要把服务器上最新的代码同步到本地的时候,你首先需要知道自己在哪个分支上,这时,你需要通过git status来查看当前的状态
  • git status可以汇报当前分支,当前有哪些文件是更改过了,哪些是新增的,哪些是删除的,哪些已经使用add命令加入了待提交列表
  • 查看完状态了,如果发现本地有更改,git pull时候会产生冲突,所以需要先把working directory清理干净再pull

git stash

那么我辛辛苦苦编辑了一半的更改怎么办?直接提交了?好像还没改完,提交了不好。那么git提供了一个叫做stash的地方,可以临时存放一下更改

git pull

整个working directory就是clean的状态了,这时候,我们就可以执行 git pull

  • git pull 做了两个事情,1. 把远端的代码同步到本机,2. 把当前分支对应的远端分支的最新更改,合并到当前分支的本地分支上
  • 其实本质上对应了两条git指令: git fetch ; git merge 本地分支 远端仓库/远端分支

当我们git pull拿到最新的代码以后,别忘了之前放在暂存区 stash的哪些更改

这个命令可以看出,git stash,这个暂存区,实际上是个堆栈结构

这是为了方便使用。stash也支持apply一个指定的暂存版本

stash pop里面有个坑

如果git stash pop时候没有冲突,那么git会自动删除暂存区里面的更改
如果冲突了,很不幸,这个暂存区里面的更改会在working directory 里面有一份, 暂存区里面还有一份!

这样,你需要在解决完冲突之后,手工把暂存区里面的清除掉
不然,如果你忘记删掉的话,下次你就搞不清楚这个暂存区里面的内容,到底要不要pop出来了
git stash drop 暂存区名字或者哈希

git技术栈如图如果掌握了,才算是基本会用
image

posted @ 2019-03-17 19:45  dadongx  阅读(127)  评论(0编辑  收藏  举报