Git
个人开发过渡到团队协作
版本控制工具
1、集中式版本控制工具
- 又一个单一的集中管理的服务器,保存所有文件的修订版本,协同工作的人通过客户端连接到服务器,取出最新的文件或者提交更新
- 好处:便于维护
- 缺点:单点故障问题(中央服务器宕机了怎么办?)
- 例子:SVN
2、分布式版本控制工具
- 自己的电脑:本地库;远程服务器:远程库
- 客户端提取的不是最新版本的文件快照,而是把代码仓库clone下来,这样任何一个协同工作的文件发生故障,都可以用其他客户端的本地仓库进行恢复
- 每个客户端的每一次文件提取操作实际上都是一次对整个文件仓库的完整备份
- 例子:git
工作机制
1、三个区域:工作区、暂存区、本地库
- 工作区:写代码的地方,本地项目的目录位置
- 暂存区:临时存储
- 本地库:生成历史版本
工作区 git add—》暂存区 git commit—》本地库
2、代码托管中心:远程库
- 给基于网络服务器的远程代码仓库
工作区 git add—》暂存区 git commit—》本地库 git push -》远程库
- 分类:
- 局域网:GitLab
- 互联网:GitHub、Gitee
常用命令
命令名称 | 作用 |
---|---|
git config --global user.name 用户名 | 设置用户签名 |
git config --global user.email 邮箱 | 设置用户签名 |
git init | 初始化本地库 |
git status | 查看本地库的状态 |
git add 文件名 | 添加到暂存区 |
git commit -m “日志信息” 文件名 | 提交到本地库 |
git reflog | 查看历史记录 |
git reset --hard 版本号 | 版本穿梭 |
分支操作
1、什么是分支?
版本控制过程中,同时推进多个任务,为每个任务可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线分离开来,开发自己的分支的时候不会影响主线分支的允许。
2、分支的好处?
同时并行推进多个功能开发,提高开发效率
各个分支在开发过程中如果某一个分支开发失败不会对其他分支产生影响
3、分支的操作
命令 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
4、代码冲突
两个分支对同一个文件的同一个位置有两个不同的修改,Git无法选择使用哪一个,必须人为决定新的代码内容
5、冲突合并
如果直接执行合并git merge test
:
Auto-merging test.txt
CONFLICT (content): Merge conflict in test.txt
Automatic merge failed; fix conflicts and then commit the result.
会出现问题,git status
:
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: test.txt
no changes added to commit (use "git add" and/or "git commit -a")
test.txt文件:
123
123
<<<<<<< HEAD
111 zhangtao
=======
111 zhangsan
>>>>>>> test
处理方法:
- 手动处理冲突的文件或者代码
- git add
- git commit
团队协作机制
1、团队内协作
2、跨团队协作