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技术栈如图如果掌握了,才算是基本会用