git实战
第一章 快速入门
1.1 什么是git
git是一个分布式的版本控制软件。
- 软件,类似于QQ、office、dota等安装到电脑上才能使用的工具。
- 版本控制,类似于毕业论文、写文案、视频剪辑等,需要反复修改和保留原历史数据。
- 分布式
- 文件夹拷贝
- 本地版本控制
- 集中式版本控制
- 分布式版本控制
1.2 为什么要做版本控制
要保留之前所有的版本,以便回滚和修改
1.3 安装git
详见:https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git
第二章 “东北热”创业史
2.1 第一阶段:单枪匹马开始干
想要让git对一个目录进行版本控制需要以下步骤:
- 进入要管理的文件夹
- 执行初始化命令
git init
- 管理目录下的文件状态
git status 注:新增的文件和修改过的文件都是红色
- 管理指定文件(红变绿)
git add 文件名 git add .
- 个人信息配置:用户名、邮箱【一次即可】
git config --global user.email ''you@exampe.com'' git config --global user.name ''your Name''
- 生成版本
git commit -m '描述信息'
- 1
- 查看版本记录
git log
- 1
2.2 第二阶段:拓展新功能
git add
git commit -m '短视频'
2.3 “约饭事件”
- 回滚至之前版本
git log git reset --hard 版本号
- 回滚之之后版本
git reflog git reset --hard 版本号
2.4 小总结
git init git add git commit git log git reflog git reset --hard 版本号
2.5 第四阶段:商城&紧急修复bug
2.5.1 分支
分支可以给使用者提供多个环境的克隆,意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。
2.5.2 紧急修复bug方案
2.5.3 命令总结
-
查看分支
git branch
-
创建分支
git branch 分支名称
-
切换分支
git checkout 分支名称
-
分支合并(可能产生冲突)
git merge 要合并的分支 注意:切换分支再合并
-
删除分支
git branch -d 分支名称
2.5.4 工作流
2.6 第五阶段:进军三里屯
有钱之后就要造啊,一个人在三里屯买了一层楼做办公室
2.6.1 第一天上班前在家上传代码
首先,需要注册GitHub账号,并创建远程仓库,然后再执行如下命令,将代码上传到GitHub。
1. 给远程仓库起别名 git remote add origin 远程仓库地址 2. 向远程推送代码 git push -u origin 分支
- 1
- 2
- 3
- 4
2.6.2 初次在公司新电脑下载代码
1. 克隆远程仓库代码 git clone 远程仓库地址 (内部已实现git remote add origin 远程仓库地址) 2. 切换分支 git checkout 分支
- 1
- 2
- 3
- 4
在公司下载代码后,继续开发
1. 切换到dev分支进行开发 git checkout dev 2. 把master分支合并到dev【仅一次】 git merge master 3. 修改代码 4. 提交代码 git add . git commit -m 'xx' git push origin dev
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
2.6.3 下班回家继续写代码
1. 切换到dev分支进行开发 git checkout dev 2. 拉代码 git pull origin dev 3. 继续开发 4. 提交代码 git add . git commit -m 'xx' git push origin dev
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
2.6.4 到公司继续开发
1. 切换到dev分支进行开发 git checkout dev 2. 拉最新代码(不必再clone,只需要通过pull获取最新代码即可) git pull origin dev 3. 继续开发 4. 提交代码 git add . git commit -m 'xx' git push origin dev
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
开发完毕,要上线
1. 将dev 分支合并到master分支,进行上线 git checkout master git merge dev git push origin master 2. 把dev分支也推送到远程 git checkout dev git merge master git push origin dev
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
2.6.5 在公司约妹子忘记提交代码
1. 拉代码 git pull origin dev 2. 继续开发 3. 提交代码 git add . git commit -m 'xx'
- 回滚至之前版本
注:忘记push了
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
2.6.6 回家继续写代码
1. 拉代码,发现在公司写的代码忘记提交了
git pull origin dev
- 继续开发其他功能
- 把dev分支也推送到远程
git add .
git commit -m ‘xx’
git push origin dev
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
2.6.7 到公司继续写代码
1. 拉代码,把晚上在家写的代码拉到本地(有合并、可能产生冲突)
git pull origin dev
2. 如果有冲突,手动解决冲突
3. 继续开发其他功能
4. 把dev分支也推送到远程
git add .
git commit -m 'xx'
git push origin dev
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
2.6.8 其他
git pull origin dev
等价于
git fetch origin dev
git merge origin/dev
- 1
- 2
- 3
- 4
2.6.9 rebase的作用
rebase可以保持提交记录简洁,不分叉。
2.6.10 快速解决冲突
-
安装beyond compare
-
在git中配置
git config --local merge.tool bc3 git config --local mergetool.path '/user/local/bin/bcomp' git config --local mergetool.keepBackup false
- 1
- 2
- 3
-
应用beyond compare解决冲突
git mergetool
- 1
2.7 小总结
-
添加远程连接(别名)
git remote add origin 地址
- 1
-
推送代码
git push origin dev
- 1
-
下载代码
git clone 地址
- 1
-
拉取代码
git pull origin dev 等价于 git fetch origin dev git merge origin/dev
- 1
- 2
- 3
- 4
-
保持代码提交整洁 (变基)
git rebase 分支
- 1
-
记录图形展示
git log -- graph --pretty=format:"%h %s"
- 1
2.8 第六阶段:多人协同开发工作流
创建项目&邀请成员
协同开发时,需要所有成员都可以对同一个项目进行操作,需要邀请成员并赋予权限,否则无法开发。
github支持两种创建项目的方式(供多人协同开发)
- 合作者,将用户添加到仓库合作者之中,该用户就可以向当前仓库提交代码。
- 组织,将成员邀请进入组织,组织下可以创建多个仓库,组织成员可以向组织下仓库提交代码。
扩展:Tag标签管理
为了能清晰的管理版本,在公司不会直接使用commit 来做版本,会基于Tag来实现:v1.0、v1.2、v2.0版本。
git tag -a v1.0 -m '版本介绍' 创建本地创建tag信息
git tag -d v1.0 删除tag
git push origin --tags 将本地tag信息推送到远程仓库
git pull origin --tags 更新本地tag版本信息
git checkout v.10 切换tag
git clone -b v0.1 地址 指定tag下载代码
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2.8.2 小弟开发
- 小弟注册github账号或gitlab账号
- 邀请小弟进入组织(默认对组织中的项目具有读权限)
- 邀请小弟成为某项目的合作者
- 小弟在自己电脑上下载代码并开发
git clone 地址
git checkout dev
git checkout -b dzz
写代码...
git add .
git commit -m '斗地主功能完成'
git push origin ddz
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2.8.3 code review
- 配置,代码review 之后才能合并到dev分支。
-
小弟提交code review申请
-
小组长做code review
提测上线 (预发布)
由专门团队或团队leader执行以下步骤:
- 基于dev分支创建release分支
git checkout dev
git checkout -b release
- 1
- 2
-
测试等
-
合并到master
使用pull request
或
本地release合并到master分支
- 1
- 2
- 3
- 在master分支打tag
git tag -a v2 -m '第二版 斗地主功能'
git push origin --tags
- 1
- 2
5.运维人员就可以去下载代码做上线
git clone -b v2 地址
- 1
2.9 第七阶段:给开源软件贡献代码
- fork源代码 将别人源代码拷贝到我自己的远程仓库。
- 在自己仓库进行修改代码
- 给源代码的作者提交 修复bug的申请(pull request)
第三章 其他
3.1 配置
- 项目配置文件:项目/,git/config
git config --local user.name '用户姓名'
git config --local user.email '邮箱'
- 1
- 2
- 全局配置:~/.gitconfig
git config --global user.name '用户姓名'
git config --global user.email '邮箱'
- 1
- 2
- 系统配置文件:/etc/.gitconfig
git config --system user.name '用户姓名'
git config --system user.email '邮箱'
注意需要root权限
- 1
- 2
- 3
应用场景:
git config --local user.name ‘用户姓名’
git config --local user.email '邮箱'
git config --local merge.tool bc3
git config --local mergetool.path '/usr/local/bin/bcomp'
git config --local mergetool.keepBackup false
git remote add origin 地址 ,默认添加在本地配置文件中(--local)
- 1
- 2
- 3
- 4
- 5
- 6
3.2 免密登录
SSH实现
1. 生成公钥和私钥(默认放在~/.ssh目录下,id_rsa.pub公钥、id_rsa私钥) ssh-keygen
2. 拷贝公钥的内容,并设置到github中
3. 在git本地中配置ssh地址
git remote add origin git@github.com:WuPeiqi/dbhot.git
4. 以后使用
git push origin master
- 1
- 2
- 3
- 4
- 5
- 6
3.3 git忽略文件
*.h
!a.h
files/
*.py[c|a|d]
- 1
- 2
- 3
- 4