1、是什么
一个分布式版本控制工具
2、平台
Github、Gitlab、Gerrit、Gitee等
3、使用方式
生成公私钥 ssh-keygen -t ed25519 -C "邮箱"
公钥放github上
- workspace:工作区
- staging area:暂存区/缓存区
- local repository:版本库或本地仓库
- remote repository:远程仓库
3.1 本地操作
| 命令 | 作用 |
|---|---|
| git init | 初始化仓库 |
| git add | 添加文件到暂存区 |
| git rm | 将文件从暂存区和工作区中删除 |
| git commit | 将暂存区的内容添加到仓库中 |
| git mv | 移动/重命名工作区文件 |
| git checkout | 分支切换 |
| git switch(2.23版本引入) | 更清晰的切换分支 |
| git restore(2.23版本引入) | 恢复/撤销文件的更改 |
| git reset | 回退版本 |
| git clone | 拷贝远程仓库 |
| git status | 查看仓库状态,显示有变更的文件 |
| git diff | 比较文件的不同,即暂存区和工作区的差异 |
| git range-diff | 比较两个提交范围之间的差异 |
| git notes | 添加注释 |
| git show | 显示git对象的详细信息 |
| git log | 查看历史提交记录 |
| git blame | 以列表形式查看指定文件的历史修改记录 |
| git shortlog | 简洁的提交日志 |
| git describe | 生成一个可读的字符串,该字符串基于 Git 的标签系统来描述当前的提交 |
git add # 添加指定文件到暂存区
git add . # 添加所有更改到暂存区
git commit -m "commit message" # 提交暂存区的更改到本地仓库
3.2 远程操作
| 命令 | 作用 |
|---|---|
| git remote | 远程仓库操作 |
| git fetch | 从远程获取代码库 |
| git pull | 下载远程代码并合并 |
| git push | 上传远程代码并合并 |
| git submodule | 管理包含其他git仓库的项目 |
查看目录结构 tree .git
简明指南:www.runoob.com/manual/git-…
4、团队合作的方式
- owner创建好仓库,其他用户fork该仓库,在fork的仓库上进行开发
- owner创建好仓库,给团队内成员分配权限,直接在同一个仓库内进行开发
创建一个 Pull Request
- 创建主分支main
- 创建feature分支
- 创建一个feature到main的Pull Request
5、常见的一些基本概念
保护分支:防止用户直接向主干分支提交代码,必须通过PR来进行合入
Code Review,CI:都是在合入前的检查策略,Code Review是人工进行检查,CI是通过一些定制化脚本检查
版本控制:一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统
6、总结
下面是一个从零开始拷贝远程仓库、创建分支、提交到远程仓库的例子:
1.克隆远程仓库
git clone username@host:/path/to/repository
2.创建一个叫做feature_x的分支,并切换过去
git checkout -b feature_x
3..添加文件到暂存区
git add <filename>
or
git add *
4..提交
git commit -m "代码提交信息"
5.推送feature_x分支
git push origin feature_x
6.切换回主分支
git checkout master
7.删除feature_x分支
git branch -d feature_x
当然,你也可以使用像idea等编译器直接图形化操作