Git与Github
文章目录
版本管理系统
作用
- 协同开发
- 冲突解决
- 版本管理
- 代码备份
- 版本记录
- 版本还原
- 历史追查
- 权限管理
- 代码审查
- 分支管理
分类
- 集中管理:CVS、VSS、SVN
- 分布式管理:Git、Mercurial、Bazaar、Darcs
Git
分布式版本控制系统
Git结构
Git工具
- 命令行工具
- 可视化工具
- Idea插件
- GitHub网站
Git基本操作
# 初始化仓库:生成隐藏目录 .git
git init
# 设置用户 项目级别
git config user.name "usrname"
git config user.email "email"
# or 设置全局 系统用户级别 没有特殊配置下新建项目使用全局用户
git config --global xxxxx
# 查看工作区、暂存区状态
git status
# 添加到暂存区
git add filename
# 将暂存区内容提交到本地库
git commit -m "comment" [filename]
# 查看历史记录
git log
git log --pretty=oneline
# 版本回退硬回退 重置暂存区和工作区
git reset --hard HEAD^ # 回退到当前版本前一个版本
git reset --hard HEAD~2 # 当前版本回退两个版本
git reflog # 查看本地操作记录
# 版本穿越
git reset --hard version_id # 回退到对应版本
# 还原文件
git checkout --filename
# 删除文件
# 删除后再次git add后提交
多版本管理-branch
# 查看分支
git branch -v
# 新建分支
git branch branchname
# 切换分支
git checkout branchname
# 合并分支
# e.g. 将test01功能合并到master
# 先切换到主分支master 然后
git merge test01
# 合并时发生冲突
## 报告冲突
## 冲突会显示在冲突文件中
## or 显示冲突内容
git diff
## 编辑冲突文件
## 提交修改后的文件
## 再次merge
# P.S.分支文件并不会修改,如要修改,需要切换到分支合并master
GitHub
Git项目托管网站,主要提供基于Git的版本托管服务
对于collaborator
# 搭建本地仓库
# 在GitHub新建Repo
# 复制仓库地址 SSH
# 增加远程地址 git remote add <远端代号> <远端地址> 远端代号可自定义
git remote add origin SSH
# 推送到远程库 git push <远端代号> <本地分支名称>
git push origin master
# 另一个user
# 从GitHub上克隆一个项目 git clone <远端地址> <新项目目录名>
git clone SSH [name]
# 从GitHub更新项目 git pull <远端代号> <远端分支名>
git pull origin master
# 协作冲突 e.g.修改本地文件时文件在GitHub被其他人修改
## 此时无法push 需要先pull最新的版本 再进行修改
对于非collaborator:fork
- fork代码库
- 修改后通过code>>new pull request 申请对原项目进行修改
- 原代码库owner审核pull request后merge pull request
在Idea中使用Git
- settings → Version Control → Git 选择本地的Git.exe的位置
- settings → Version Control → GitHub 填写网站登录的用户名密码
图形界面操作
Gitflow
多分支管理
- 主干分支 master
主要负责管理正在运行的生产环境代码,永远保持与正在运行的生产环境完全一致 - 开发分支 develop
主要负责管理正在开发过程中的代码,一般情况下应该是最新的代码 - bug修理分支 hotfix
主要负责管理生产环境下出现的紧急修复的代码, 从主干分支分出,修理完毕并测试上线后,并回主干分支;并回后,视情况可以删除该分支 - 发布版本分支 release
较大的版本上线前,会从开发分支中分出发布版本分支,进行最后阶段的集成测试;该版本上线后,会合并到主干分支;生产环境运行一段阶段较稳定后可以视情况删除 - 功能分支 feature
为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来; 开发完成后会合并到开发分支