Git的使用 | 青训营笔记
这是我参与「第三届青训营 -后端场」笔记创作活动的的第 3篇笔记
为什么需要版本控制?
- 可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。
- 可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。
版本控制
集中式(SVN)
- 优点:代码存放在单一的服务器上,便于项目的管理
- 缺点:服务器宕机、服务器炸了
分布式(GIT)
-
优点:
每次存的都是项目的完整快照,需要的硬盘空间对相对大一点(对代码进行机制的压缩,最终需要的空间也不会很大,但回滚速度很快)
断网的情况下也能开发
github挂了,每个客户端也有完整的项目
初始化
- git config --global user.name "liyu"
- git config --global user.email 1419908263@qq.com
- git config --list
区域
- 工作区
- 暂存区
- 版本库
常见命令
配置命令
- git config --list 列出当前配置
- git config --local --list 列出Repsitory配置
- git config --global --list 列出全局配置
- git config --system --list 列出系统配置
- git config --global user.name "liyu" 配置用户名
- git config --global user.email "1419908263@qq.com"
分支管理
- git branch 查看本地分支
- git branch -r 查看远程分支
- git branch -a 查看远程和本地分支
- git checkout <分支名> 从当前分支切换到其他分支
- git checkout -b <分支名> 创建并建立新的分支
- git checkout -d <分支名> 删除分支
- git merge <分支名> 当前分支与指定分支合并
- git branch --merged 查看那些分支已经合并到当前分支
- git branch --no-merged 查看哪些分支没有合并到当前分支
- git branch -v 查看各个分支最后一个提交对象的信息
- git push origin --d <分支名> 删除远程分支
- git branch -m <老分支名><新分支名> 重新命名分支
fetch指令
- git fetch <远程主机名> 将某个远程主机的更新,全部取回本地
- git fetch <远程主机名><分支名> 取回特定分支
- git fetch origin <分支名> <本地分支名> 从远程库拉取特定分支
撤销
- git checkout -- <文件名> 撤销工作区修改
- git reset HEAD <文件名> 暂存区文件撤销(不覆盖工作区)
- git reset --hard <版本号> 版本回退
文件状态
- git status untracked暂存区没文件、midifed、staged使用git add暂存
差异比较
- git diff 比较工作区与缓存区
- git diff --cached 比较缓存区与本地库最近一次commit的内容
- git diff HEAD 比较工作区与本地最近一次commit的内容
- git diff <版本号> <版本号> 比较两个commit的差异