因为长时间使用git+hexo来写自己的博客;所以打算系统学习git(教程来源于菜鸟编程)
Git和传统的版本控制器系统的区别
- 分布式
- 内容是按照元数据方式存储,而svn是按照文件的元信息
- Git分支不是目录
- Git没有全局版本
- Git有加密算法,保证代码的完整性
git config配置
配置用户信息,查看配置信息,差异分析工具
git checkout:会用暂存区删除文件,工作区不会改变,覆盖或者是(切换分支)
克隆到指定的目录,可以使用以下命令格式:
git clone
Git 工作区、暂存区和版本库
工作区:就是你在电脑里能看到的目录。
暂存区:英文叫 stage 或 index。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
Git的基本操作
git reset 回退版本
git status 查看当前仓库的状态,显示有变更的文件
git diff 比较文件的不同,暂缓区和工作区
git rm 删除工作区文件
git mv 重新命名
git blame 以列表形式查看指定文件的历史修改记录
git fetch 从远程获取代码
合并冲突
修改同文件不同处,rebase和merge合并不会冲突
修改同文件同一处,合并会冲突,
解决方式:
rebase,解决冲突,执行add+rebase continue;
merge,解决冲突,重新提交
rebase和merge区别
rebase:变基,合并分支后可以将分支走向的基准线变更,在分支很多的时候,可以简化分支的展示,本质是先取消自己的提交,临时保存,然后把当前分支更新到最新的origin分支,最后应用自己的提交
merge: 会生成一个新得合并节点,保持修改内容的历史记录,但是历史记录会很复杂
五类主要分支
- master分支只负责管理发布的状态。在提交时使用标签记录发布版本号。
- develop分支是针对发布的日常开发分支。刚才我们已经讲解过有合并分支的功用。
- feature分支针对新功能开发
- release分支一般的开发是在develop分支上进行的,到了可以发布的状态时再创建release分支,为release做最后的bug修正。
- hotfix分支是在发布的产品需要紧急修正时,从master分支创建的分支。