- git是一个分布式的版本控制软件
- 版本控制是什么?
- 快速回到指定版本
- 记录修改历史,比如:某一行是谁修改的?某一次修改了哪些内容?
- 优点:
- 高效管理代码版本
- 远程同步
- 强大的分支功能
- 提高多人协作效率
- 分布式是什么意思?
- 提交(commit):代码仓库中的一个版本
- 仓库:保存所有版本的地方
- 暂存区:暂时存放要保存到仓库里的内容
- 工作区:写代码的地方
- 在仓库里新增一个提交的过程:
- 在工作区修改(添加/删除)
- 以文件为单位,将修改的文件提交到暂存区
- 将暂存区中的文件打包,提交到仓库中
- 新建仓库:
git init
- 查看工作区状态:
git status
- 将修改提交到暂存区:
git add
- 将暂存区的修改打包,形成仓库中的一条新提交:
git commit
- 查看修改历史:
git log
- 切换到历史版本:
git checkout
- stash区:
git stash
- github和gitee是什么?
- github和gitee是开源社区,可以认为是远程代码仓库,但功能远超远程仓库
- 开源社区还可以向开发者提交bug反馈,提新的需求,在该项目下讨论交流,向该项目提交合并请求
- 新建远程仓
- 向远程仓推送代码:
git push <server-name> <branch-name>
- 从远程仓拉取代码:
git pull [<server-name> <branch-name>]
- 总结
- 分支是什么?
- 分支的应用场景:
- 多人并行开发时,基于相同的版本,各自拉分支开发
- 开发新功能时,从稳定的分支上拉取出一个新的分支开发
- 优点:
- 多人同时开发独立功能,提高协作效率
- 能够帮助保证代码质量,方便CICD(持续集成、持续发布)进行版本管理
- 新建分支:
git branch <branch-name>
- 查询已有分支:
git branch
- 将其他分支的修改应用到当前分支:
git cherry-pick <commit-id-start>..<commit-id-end>
- 切换分支:
git checkout <branch-name>
git checkout -b <new-branch-name>
- 合并分支:
git merge <dst-branch-name>
git rebase <dst-branch-name>
- 删除分支:
git branch -d <branch-name>
- 产生原因:
- 两次提交中对同一个文件的同一行进行了不同的修改
- 在合并的时候git不知道应该选择(选择其一?还是保留两者?)
- 如何解决:
- 使用命令
git status
查看哪些文件产生了冲突 - 打开该文件搜索
<<<<<<<
找到冲突位置,git会使用特殊符号标识冲突部分 - 解决冲突
- 将冲突文件添加至暂存区
- 继续冲突前的步骤
- 使用命令
- 如何避免产生冲突:
- 如果两个人的提交经常产生冲突,说明二者的功能划分不够独立,考虑是不是设计问题