Git介绍
- 主要的功能 :分布式的软件版本控制
- 开源的高扩展的分布式全文搜索引擎,近乎实时的存储,检索数据,本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
Git软件安装
安装地址 :Git - 安装 Git (git-scm.com)
- Git GUI : Git 提供的图形化界面工具
- Git Bash : Git 提供的命令行工具
# window 版本git
wzh@LAPTOP-947L69HL MINGW64 ~
$ git --version
git version 2.25.0.windows.1
Git管理文件夹
# 通过Git hash here进入git界面
# 1、Git初始化 - 目录下生成隐藏文件
wzh@LAPTOP-947L69HL MINGW64 /d/学习文件/Python Django项目前导/20200309-第三讲-初试Git
$ git init
Initialized empty Git repository in D:/学习文件/Python Django项目前导/20200309-第三讲-初试Git/.git/
# 2、查看 Git 状态(管理目录下文件的状态)
wzh@LAPTOP-947L69HL MINGW64 /d/学习文件/Python Django项目前导/20200309-第三讲-初试Git (master)
$ git status
On branch master
No commits yet
Untracked files:
(use "git add <file>..." to include in what will be committed)
"\344\270\212\350\257\276\350\247\206\351\242\221/"
"\344\270\212\350\257\276\350\265\204\346\226\231.zip"
"\344\270\212\350\257\276\350\265\204\346\226\231/"
nothing added to commit but untracked files present (use "git add" to track)
# 3、管理指定的文件
wzh@LAPTOP-947L69HL MINGW64 /d/学习文件/Python Django项目前导/20200309-第三讲-初试Git
$ git add index.html
$ git add .
# 4、配合个人信息
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
# 5、生成版本 - 查看当前文件的提交状态(缓存区状态)
$ git status
- # 红色:新增 或 修改了原来的文件
- # 绿色: 已经管理起来的文件
On branch master
No commits yet
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: test1.txt
$ git commit -m '描述信息'
# 6、查看版本库信息
$ git log
commit 3ef5feaf62ae28c8af043ffcfe8a9d52959e3266 (HEAD -> master)
Author: li chunlei <375763410@qq.com>
Date: Tue Sep 6 06:35:52 2022 +0800
test1 版本1
# 第二阶段:拓展新功能
$ git add # 推送至暂存区
$ git commit -m "短视频" # 推送到版本库
# 7、第三阶段:约饭功能 回滚至之前版本
# (HEAD -> master) 代表当前的版本
$ git log
commit 3ef5feaf62ae28c8af043ffcfe8a9d52959e3266 (HEAD -> master)
Author: li chunlei <375763410@qq.com>
Date: Tue Sep 6 06:35:52 2022 +0800
test1 版本1
$ git reset --hard ef5feaf62ae28c8af043ffcfe8a9d52959e3266 (HEAD -> master)
# 查看回滚后的版本信息
$ git reflog
$ git reset --hard 版本号
# 对缓存区的文件进行变更为 工作区
$ git reset HEAD index.html4
# 对工作区的文件进行恢复为 已控制文件
$ git check checkout index.html
分支管理
分支的类型
- master分支 :生产分支
- devlop开发分支 : 开发部门的主要分支,阶段开发完成后,需要合并的 master分支上
- featurev/ xxx 分支 :从devlop 创建的分支,一般是同期并行开发,分支开发完成完成后,合并到 devlop分支
- hotfix/xxx分支 :从master派生的分支,一般作为线上bug修复使用,修复后需要合并到 master、test、develop分支
# 查看当前分支信息(查看所在分支)
wzh@LAPTOP-947L69HL MINGW64 /d/学习文件/Python Django项目前导/20200309-第三讲-初试Git (master)
$ git branch
dev
* master
# 创建所在分支
$ git branch "分支名字"
# 切换分支
$ git checkout dev
Switched to branch 'dev'
$ git branch
* dev
master
# 切换到主线分支
# 合并分支
$ git merge "分支名称"
# 切换到主线分支
# 删除分支
$ git branch -d "分支名称"
GitHub 代码托管的仓库
- 注册github账号、创建远程仓库、再执行命令将代码上传到github
- 用 Git 向github 推送代码
# 本地生成密钥对
ssh-keygen -t rsa
# 查看生成的公钥信息
cat ~/.ssh/id_rsa.pub
# 将秘钥复制到github或码云端
# 完整是否ssh配置成功
$ ssh -T git@gitee.com
Hi WZH(@wzh131211)! You've successfully authenticated, but GITEE.COM does not provide shell access.
# github中选择
new repository
create a new repository
# 项目名称(Github界面填写)
repository name
# 1、给远程仓库起别名 origin为起名别名 (地址为创建项目时生成)
git remote add origin "远程仓库地址"
# 2、向github推送代码(推送至分支)
git push -u origin "分支名"
git push -u origin "本地分支名":"云端分支名"
# 2、向github推送代码
git puxaomgigin "分支名称" # 分支可以时master、或其他
# 在公司开发
# 3、克隆远程仓库代码(代码会在 cmd 窗口所在目录下)
git clone "远程仓库地址" # 将代码克隆到本地
# 将远程仓库里面更新的抓取到本地,但不会合并
git fetch [remote anme] [branch name]
# 将远程仓库里面更新内容抓取到本地,会进行合并
git pull [remote anme] [branch name]
# 4、切换分支(切换到分支后进行开发)
git checkout "分支名"
# 把 master 合并到dev(在dev分支继续合并)
git merge master
# 提交代码(公司开发完)
git add
git commit -m "xxx"
git push origin dev
# 回家后拉取代码下来
git checkput dev # 先切换到dev 分支
git pull origin "dev" # 拉取最新代码
git push origin dev # 将开发完成的文件推上去
# 开发完成上线
git checkout master # 切换到主线
git merge dev # 合并 dev 分支
git push origin master # 提交主线
rebase (变基)
- 保持提交记录的简洁 — 合并版本
# 合并版本
git rebase -i HEAD~2 # 合并最近的2个版本
git rebase -i v1 # 合并v1版本之后的所有版本
git rebase -i "版本号" # 合并版本号之后的所有版本
多人协同开发流程
- 方式1(合作者) — 用户添加到仓库合作者之后,该用户就可以向当前仓库提交代码
- 方式2(组织) — 将成员邀约进入组织,组织下可以创建多个仓库,组织成员可以向组织下仓库提交代码
# 合作者方式
settings / manage access / invite a collaborator("邀请人员加入")
# 创建组织 组织/多个仓库/多个用户
1、Choose Team for Open source # 创建组织(选择)
2、"用户名 + 邮箱 + 隶属于账号"
3、"添加用户 + 邀请成员"
4、set up your first repository # 组织下的仓库
5、"提交代码 + 打标签(版本号)"
6、settings/Member privieges # 邀请成员加入(按权限划分)