作者:Eventi 出处:http://www.cnblogs.com/Eventi 欢迎转载,也请保留这段声明。谢谢!
git简介
版本控制软件,由Linus(linux开发者)开发,最初用来对linux进行版本控制。
git优势
- 大部分在本地完成,不需要联网(在本地安装软件,实现版本控制,本地保存完整的数据)
- 完整性保证(每次版本控制进行hash计算保证程序的完整性)
- 尽可能的添加数据而不是删除或修改数据(每次保存新的版本,不会删除原来的版本)
- 分支操作非常快捷路畅(内部以快照的形式管理,分支其实就不同的指针,切换或创建快照就是对指针的操作)
- 与linux命令全面兼容(显然,同一人开发的)
git安装
- 官网地址:https://git-scm.com
- 安装:在安装向导中,Adjusting your PATH environment选项中选择Use Git from Git Bash only,意思是只在Git Bash中使用Git,选择该项的原因是这种方式使用Git就足够了。其他直接下一步。
Git本地结构:工作区、暂存区、本地库。
- 工作区:写代码
- 暂存区:临时存储
- 本地库:历史版本
- git add命令:工作区--->暂存区
- git commit命令:暂存区--->本地库
Git和代码托管中心
局域网下:
- GitLab服务器(可自己搭建)
外网:
- 码云(国内)
- github(国外)
本地库和远程库
团队内部协作
- 本地库--->远程库:push(其他成员需要加入团队才能push)
- 远程库--->本地库:clone,pull
跨团队协作
- 远程库--->远程库:fork,pull request->(审核)->merge
Git命令操作
本地库初始化
设置签名
命令
-
git status:查看状态
-
git add:将工作目录文件提交到暂存区
-
git rm --cached
...:将文件从暂存区移除 -
git commit:从暂存区提交到本地库(会进入VIM编辑器,要求输入提交的信息)
- git commit -m "消息"
:-m命令可不用进入vim编辑器
- git commit -m "消息"
-
git checkout --
...:撤销当前修改 -
git reset HEAD
...: -
git log:查看提交日志
-
版本前进后退
- 基于索引值操作
- git reset --head <版本索引>
- 使用^符号:只能后退
- git reset --hard HEAD^:往后退一步
- git reset --head HEAD^^:后退两步
- 使用~符号:只能后退
- git reset --hard HEAD~n:后退n步
- 基于索引值操作
-
git help [命令]:查看某个命令帮助
-
git reset 参数对比
- --soft参数:不会碰暂存区和工作区,仅仅是在本地库移动HEAD指针
- --mixed参数:移动本地库HEAD指针,会重置暂存区,不会碰工作区,
- --hard参数:移动本地库HEAD指针,会重置暂存区和工作区
-
比较文件差异
git分支
什么是分支
在版本控制中,使用多条线同时推进多个任务。
分支举例
- master:主分支
- feature_blue:blue分支
- feature_red:red分支
- hot_fix:热修复分支
分支的好处
命令
- git branch -v:查看所有分支
- git branch [分支名]:创建分支
- git checkout [分支名]:切换分支
- 合并分支:
- 第一步:git checkout [被合并分支名](切换到被合并的分支)
- 第二步:git merge [指定要合并到此分支的分支名字]
- 解决分支冲突:
Git基本原理
哈希
- 加密算法,将明文加密为密文:
Git的文件管理机制
Git分支管理机制
学习视频 B站视频:https://www.bilibili.com/video/BV1pW411A7a5 笔记