一、具备的功能
- 协同修改
- 数据备份,不会删除文件只会叠加各种版本的项目
- 权限控制
- 历史记录
- 分支管理,提高开发效率
二、版本控制简介
- 版本控制工具分为集中式版本控制工具:CVS、SVN、VSS和分布式版本管理工具GIt、Mercural、Bazaar,分布式版本管理可避免单点故障。
三、Git简介
3.1 Git结构
工作区 =git dd=》 暂存区 =git commit=》本地库
3.2 本地库和远程库
3.2.1 团队内部协作
3.2.2 跨团队合作
四、Git命令行操作
4.1 Git Bash基础操作
4.1.1 基本指令
基于Vim编辑器补充:
查看文件内容
cat 文件名
编辑文件内容
vim 文件名
退出文件编辑
ESC + :wq
4.2 设置签名
签名用于区分不同开发人员的身份
用户名:xiuzhu
Email:[email protected]
4.2.1 项目级别/仓库级别:仅在当前本地库范围内有效
指令:
git config user.name xiuzhu_pro
git config user.name [email protected]
4.2.2 系统用户级别:登录当前操作系统的用户范围
指令
git config --global user.name xiuzhu_glb
git config --global [email protected]
4.3 基本操作
4.3.1 状态查看
作用查看工作区、暂存区状态
指令
git status
4.3.2 添加
将工作区的“新建/修改”添加到暂存区
指令:
git add [文件名]
4.3.3 提交
将暂存区的内容提交到本地库
指令:
git commit -m “注释信息” [文件名]
4.3.4 查看历史记录
查看文件的操作记录
指令1:
git log
指令2:
git log --pretty=oneline
指令3:
git log --oneline
指令4:
git reflog
4.3.5 版本的前进后退
本质是HEAD指针的移动
== 指令1:基于索引值操作(推荐) ==
git reset --hard a6ace91
指令1:使用~符号,只能后退
git reset --hard HEAD~n
注:表示后退 n 步
4.3.6 删除文件的找回
删除前,已经提交到了本地库
指令1:
git reset --hard [指针位置]
4.4 分支管理
同时推进的多个功能的开发
4.4.1 创建分支
指令
git branch [分支名]
4.4.2 查看分支
指令
git branch -v
4.4.3 切换分支
指令
git checkout [分支名]
4.4.4 合并分支
第一步:切换到接受修改的分支上
git branch [分支名]
第二步:执行 merge 命令
git merge [有新内容分支名]
可能会出现合并冲突
解决方法
第一步:编辑文件冲突的地方,删除特殊符号。
第二步:git add [文件名]
第三步:git commit -m “日志信息”
注意:此时 commit 一定不能带具体文件名
五、GitHub
5.1 给远程库起别名
git remote add [别名] [远程地址]
5.2 查看远程库别名
创建仓库后,查看当前所有远程地址别名
指令:
git remote -v
5.3 推送分支
推送分支到远程库,之后可能需要登录GitHub账号
指令:
git push [别名] [分支名]
5.4 克隆远程库
完整的把远程库下载到本地
创建 origin 远程地址别名
初始化本地库
指令:
git origin [远程地址]
5.5 团队成员邀请
第一步:在GitHub远程库上的 setting ==》Collaborators 复制邀请链接
二步:团队中的其他成员,在自己的GitHub的地址栏粘贴这个邀请链接即可
5.6 拉取远程库
指令:
git fetch [远程库地址别名] [远程分支名]
git merge [远程库地址别名/远程分支名]
指令:pull=fetch+merge
git pull [远程库地址别名] [远程分支名]
== 注意 ==
- 如果不是基于 GitHub 远程库的最新版所做的修改,不能推送,必须先拉
取。 - 拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决即可。
5.7 跨团队合作
- 找到需要编码的仓库,之后Fork仓库
- 下载到本地修改,然后推送到远程
- 仓库管理员进行Pull Request
- 审核代码
- 合并代码