序言
Git是一个开源的分布式版本控制系统,用于在多人协作的软件开发中跟踪和管理代码的变更。Git的主要功能有:
- 分布式版本控制 - Git是一个分布式的版本控制系统,允许多个开发者在不同系统上管理和编辑同一个代码库。
- 快照流机制 - Git通过快照流机制保存不同版本的代码。每次提交代码时,Git会捕获那个时刻的全部文件快照。
- 支持离线操作 - 即使脱机,开发者也可以在本地提交更改,等重新连接后再和服务器同步。
- 分支管理 - Git可以创建多条开发分支,合并分支非常快速和简单。
- 完整性保证 - Git会计算存储内容的校验和,可保证代码未被非法篡改。
- 多种协作流程 - Git支持多种代码协作流程,如集中式、功能分支等。
Git的常见指令包括:
基础
git help <command>git init: 创建一个新的 git 仓库,其数据会存放在一个名为.git的目录下git status: 显示当前的仓库状态git add <filename>: 添加文件到暂存区git commit: 创建一个新的提交git loggit log --all --graph --decorate: 可视化历史记录(有向无环图)git diff <filename>: 显示与暂存区文件的差异git diff <revision> <filename>: 显示某个文件两个版本之间的差异git checkout <revision>: 更新 HEAD 和目前的分支git switch <branch>:可以切换到指定分支,并更新工作目录-c:可以创建新分支并立即切换到该分支-:切换到上一个分支-d:删除指定分支
分支和合并
git branch: 显示分支git branch <name>: 创建分支git checkout -b <name>: 创建分支并切换到该分支- 相当于
git branch <name>; git checkout <name>
- 相当于
git merge <revision>: 合并到当前分支git mergetool: 使用工具来处理合并冲突git rebase: 将一系列补丁变基(rebase)为新的基线
远端操作
git remote: 列出远端git remote add <name> <url>: 添加一个远端git push <remote> <local branch>:<remote branch>: 将对象传送至远端并更新远端引用git branch --set-upstream-to=<remote>/<remote branch>: 创建本地和远端分支的关联关系git fetch: 从远端获取对象/索引git pull: 相当于git fetch; git mergegit clone: 从远端下载仓库
撤销
git commit --amend: 编辑提交的内容或信息git reset HEAD <file>: 恢复暂存的文件git checkout -- <file>: 丢弃修改git restore: git2.32版本后取代git reset 进行许多撤销操作
Git流分支管理策略
- master分支用于存储发布历史,始终保持与线上代码一致。
- develop分支 是开发的主分支。
- feature分支 用于开发新功能,从develop分支切出,开发完成后合并回develop。
- release分支 用于发布前准备,从develop分支切出,发布结束后合并回develop和master。
- hotfix分支 用于线上bug紧急修复,从master分支切出,修复后合并回master和develop。
具体流程如下:
- 从master分支切出develop分支,develop成为主开发分支
- 从develop分支切出feature分支,用于开发一个新功能
- 功能开发完成,合并feature分支回develop分支
- 当要发布一个新版本时,从develop分支切出release分支
- 在release分支最后测试和修复bug,然后合并回master和develop分支
- 线上bug修复需要从master切出hotfix分支进行修复
- 修复完成后合并hotfix分支回master和develop分支