git分支管理,远程仓库,协同开发,线上分支合并
git分支管理
一般情况 公司理git都有三条分支,主分支,开发分支,bug分支。
可以确保主分支都是可以供用户查看的版本。
开发人员在开发分支上 进行开发,开发完成后合并到主分支。
1,分支查看
git branch
创建分支
git branch 分支名
git branch dev
切换分支
git checkout dev # *号会到dev上
分支删除
git branch -d dev
合并分支
注意我们是按照 主分支
的某个版本 的基础上继续 开发,在我们没有合并之前主分支看不见我们 开发分支
上的代码。
切换分支后执行合并命令
"需要搞清楚把哪个分支合到哪个分支里"
我想把dev合并到master分支
就要先到master分支里
执行下面的命令
git merge dev
分支合并可能会出冲突,如果在我们合并的时候有别人在主分支上合并了而且代码与我们在一行上就会出冲突。所以需要经常从主分支上拉数据下来。
在公司最常见的有两种分支结构
-master分支,dev分支,bug分支 ,所有人在dev分支开发,开发完成合并到主分支
-master分支,dev分支,bug分支 ,个人分支,个人在个人分支上开发,开发完成合并到dev分支
git 远程仓库
我们之前的操作都在本地,在公司里一般都是提交到远程仓库.
gitlab搭建过程
https://zhuanlan.zhihu.com/p/413217715
我们这里拿gitee示例
注意
如果我们如果之前填写好的过滤已经提交到版本库了,漏了要过滤的文件但是已经在版本库了,在写上也不会过滤。
只有把他删了后提交到版本库里,这样版本库里就没有了,然后新增加的就不会被管理了。
比较麻烦,所以一开始就要写好过滤。
提交到远程库里之前需要先在本地库提交了
本地操作
1.在需要被管理的文件里右键打开git
输入 - git init
2. 设置忽略文件
.gitignore
3. 添加到暂存区
- git add .
4. 提交到版本库
- git commit -m 'v1版本的提交'
远程操作
在gitee上创建仓库
登录账号后右上角+号新建仓库,跳转页面
可以用pycharm打开该项目在里面Terminal输入,也可以到文件目录打开git,咱们是已有仓库
Git 全局设置:
git config --global user.name "李阿鸡"
git config --global user.email "392879076@qq.com"
已有仓库
cd luffy_api
"下面的origin是仓库名后面是地址"
git remote add origin https://gitee.com/LiAJibb/luffy_api.git # 新增一个远程仓库地址,可以添加多个
git push -u origin "master" # 把本地库推送到 远程库的master上
git push origin master # 也可以推
"需要输入gitee密码,只用输入一次,后面回保存在windos凭据管理里"
查看仓库
git remote
删除仓库
慎用
git remote remove 仓库名/origin
SSH公钥密码链接远程仓库
私钥保存在本地,公钥配置在gitee上,以后提交的时候就不需要在输入密码
步骤
1.生成公钥私钥
在gitee个人设置里找到ssh公钥里面有查看怎么生成公钥
文档
https://gitee.com/help/articles/4181#article-header0
命令窗口执行命令
ssh-keygen -t ed25519 -C "392879076@qq.com"
一路回车
会生成两个文件一个公钥(pub结尾的)一个私钥
公钥配置在gitee上
ssh地址在gitee仓库里找看下图
把远程仓库的地址修改成ssh地址
先把之前的地址删了
git remote remove origin
添加ssh地址
git remote add origin git@gitee.com:LiAJibb/luffy_api.git
协同开发
仓库管理员把员工设置为该仓库的开发者,设置完成后员工账号也能看到该项目了。
从远程仓库clone代码
前提:必须是该仓库的管理员或员工
新建一个文件夹用于存放项目,在文件夹内右键打开git 输入下面代码
git clone git@gitee.com:LiAJibb/luffy_api.git
注意克隆之前需要现在gitee设置公钥不然无法识别身份
使用pycharm 打开该项目 配置好python解释器,下载依赖
然后就可以开发代码啦
开发完之后提交的时候需要把用户名邮箱改成自己的
git add
# 设置用户名和邮箱
git config user.name 用户名
git config user.email 邮箱
git commit
git push origin master
冲突测试
同事:
git pull origin master # 拉取代码
在manage里第五行打了一个print
git add .
git commit -m
git push origin master # 先提交了代码
我:
在manage里第五行打了一个print
git add .
git commit -m
git push origin master # 我提交代码我报错了
git pull origin master # 拉取代码下来
需要解决这个问题,如果你们写的功能一样,你觉得你写的好那么需要和同事说把他的删了(不推荐,容易造成矛盾),或者把你自己的删了。或者换一行把名字改了以后你用你自己的。
不一样就都留下来
修改后再提交就成功了,同样的问题在分支合并的时候也会起冲突。
如何避免经常出现冲突
经常拉取代码,保持代码是最新的版本
线上分支合并
有两种方法
1.拉取线上版本在线下创建好dev分支后
git push origin dev 把dev推到线上
git branch dev # 创建分支
git push origin dev
-
线上直接创建分支
分支管理创建分支,线上会自动复制一份代码给新分支
线下进入项目切换进该分支,直接拉取该分支的代码提交到本地的dev
1. git pull origin dev # 把线上的dev代码拉下来
2. git checkout dev # 切换到dev分支
3.随意改代码,开发后上传即可
git add .
git commit -m '注释'
git push origin dev # 推到线上
3.gitee上合并分支
进入项目仓库
创建新分支以后会提交个请求,由部门老大审查通过与测试人员测试通过后才可以正式合并
远程仓库回滚(慎用)
本地版本回退,进入分支
git reflog # 查看版本 拷贝版本号
git reset --head 版本号
强行推到远端
git push origin master -f