git分支操作、远程仓库、协同开发冲突解决
复习
# 互联网项目:主站(互联网用户看的)--》前后端发呢里,后台管理(RBAC)---》混和(simpleui),前后端分离(django-vue-admin)
# 后台管理---》simpleui---》基于admin,美化了界面
-安装---》在app中注册---》第一个位置
-二次开发:左侧侧边栏可以通过配置文件定制---》原来有地址(只要在admin中注册)
-写自己的:直接配置好路由即可(混合开发)
-给页面增加按钮--->admin的类中即可
-监控大屏(html,css,js)
# git介绍:版本管理软件
-协同开发
-版本进行管理
# git 和 svn
-分布式管理:远端服务挂掉了,本地也可以管理代码
-集中式管理:远端服务挂掉了,就不能进行版本管理了
# git ,github,gitee,gitlab
# 安装---》一路下一步
# 使用:记住的-->工作区---》暂存区---》版本库
-git init
-git add .
-git commi -m '注释'
-git status
-git log # 内容多
-git reflog # 更全,简洁
-git checkout . # 工作区回退 --->工作区修改了代码(新增的文件不管)
-git reset HEAD . # 把绿变红(从暂存区拉回到工作区)
-git reset --hard 版本号 # 把工作区的内容,切换到某个版本上
# 忽略(过滤)
-仓库中有一些文件不想被版本管理,不想提交到远端
-仓库根路径新建.gitignore
-写入规则
/文件夹名字
s1.py
*.py
.idea
*.pyc
__pycache__
1 git分支操作
# 1 创建分支
git branch dev
# 2 查看分支(本地)
git branch
# * master 目前只有master分支,当前在哪个分支
# 3 切换分支
git checkout dev
# 4 创建并切换
git checkout -b 分支名
# 5 删除分支
git branch -d 分支名
# 6 查看远程分支
# 7 合并分支
git merge dev # 目前在master上,把dev合并到master
# 练习
105 git branch dev
106 git checkout master
107 git branch
108 git checkout bug
109 git status
110 git add .
111 git commit -m '修复了bug,新增了bug.txt,在xx.txt中新增了一行'
112 git checkout master
113 git merge bug
114 git checkout dev
115 git status
116 git add .
117 git commit -m 'dev分支:sss.txt新增了一行'
118 git status
119 git checkout master
120 git merge dev
121 git branch
2 远程仓库
2.1 仓库创建者---》代码是我提交的
# github,gitee,gitlab
##### 操作步骤
#1 注册gitee账号
-部分公司的代码,是托管在gitee上的
#2 创建一个远程仓库
-后端项目和前端项目放到两个仓库
#3 本地仓库,提交到远端(需要保证,远程仓库是空的)
-3.1设置账号和邮箱
git config --global user.name "zhangshihu"
git config --global user.email "1617271856@qq.com"
-3.2本地没有仓库
mkdir luffy_back
cd luffy_back
git init
touch README.md
git add README.md
git commit -m "first commit"
git remote add origin https://gitee.com/zhangshihutop/luffy.git
git push origin master
-3.2本地有仓库
# 进入项目的目录
cd xxx
# 添加远程仓库,git remote add ,origin:起了个名字,地址是:https://gitee.com/liuqingzheng/luffy_back.git
# 以后origin就代指这个地址
git remote add origin https://gitee.com/zhangshihutop/luffy.git
# 把本地的master提交到origin地址
git push origin master
# 输入 gitee的账号和密码(一旦输入过一次,会在操作系统上记录下,以后不用输入了,凭据管理)
2.2 普通开发者--->仓库已经建好了
# 仓库已经存在了---》基于仓库继续开发
# git clone https://gitee.com/zhangshihutop/luffy.git 你领导发给的 直接克隆到本地
# 使用pycharm打开,继续开发即可
git add .
git commit -m '提交'
# git remote 查看远程仓库
git push origin master # 克隆下来的自动匹配上
3 ssh协议连接远程源
# 公司里常用的
-只需要配置好公钥,私钥,以后不需要使用用户名密码了
# 生成公钥,私钥
ssh-keygen -t ed25519 -C "1617271856@qq.com"
id_ed25519.pub 公钥
id_ed25519 私钥
# 生成后,把公钥配置在远程仓库
-我的(头像)--->设置---》ssh公钥---》配置上刚刚生成的公钥
-表示我这台机器,不需要输入用户名密码就可以操作我的gitee账号了(提交,拉取代码)
-现在删掉凭据,再提交代码,还需要输入用户名密码?
-git remote add origin https://gitee.com/zhangshihutop/luffy.git
-git remote 查看远程仓库
-git remote remove origin # 删除origin这个远程仓库
# 重新配置远程仓库
git remote add origin git@gitee.com:zhangshihutop/luffy.git
# 修改代码
git add .
git commit -m ''
git push origin master # 第一次输入yes,以后都不用了,因为已经配好ssh了
4 协同开发
# 多个人同时开发一个项目,既要做好版本的管理,又要做好代码的合并
"""
1)作为开发者,第一次同步项目(前台已经是项目开发者了)
>: git clone 项目地址
2)本地开发的代码,必须add、commit到本地版本库后,才和远程仓库进行交互
4)交互顺序:必须 先拉(pull)后提(push) 时不时pull一下
5)必须切换到要交互的分支,在与远程同名的分支进行交互,如本地dev与远程dev交互
>: git checkout dev
>: git add .
>: git commit -m '本次提交的信息提示'
>: git pull origin dev 拉代码
>: git push origin dev 上传代码
"""
5 冲突解决
# 分支合并
# 协同开发,共同操作同一个分支
# 你们刚到公司,可能只给你访问权限---》只能看,不能提交
# 多个人再同一个分支上开发---》出的冲突
<<<<<<< HEAD # 你的代码
print('迪迦')
======= # 远端别人的代码
print('泰罗')
>>>>>>> 363ecd639982a9c539c7280bd37e68d2822911ff
# 肯定是改了共同的代码才出的冲突--->保留某个人或者两个都保留
git add .
git commit -m
git push origin master
###### 分支合并冲突
git branch dev 创建分支dev
git branch bug 创建分支bug
git checkout bug 切换分支
# 修改代码(bug分支)
git add .
git commit -m '注释'
# 切换回主
git checkout master
# 合并(现在没有问题,合并成)
git merge bug
# 切到dev分支
git checkout dev
# 改同一行代码
git add .
git commit -m '注释'
# 切换回主
git checkout master
# 合并(现在有冲突)--->解决冲突 看具体是改错了 还是改重复了 留下有用的
git merge dev
git add .
git commit -m '注释'
6 线上分支合并
# 远端:master和dev分支
# 本地:master和dev分支
# 我们都在dev分支开发---》本地的dev---》开发完了提交到远端的dev----》要把远端的dev合并到远端的master
# 提交pr(pull request),提交合并分支请求 ####
# 远端建立一个dev分支
# 本地只需要
git checkout dev # 自动把远端dev拉下来,切换到本地dev上
# 再本地dev开发,提交到远端dev
# 修改代码
git add .
git commit -m 'dev改了'
# 提交到远端dev
git push origin dev # 把现在在的本地分支(dev),提交到远端的dev
面试常问问题
# 你知道git rebase (git 变基)
-我知道,但我们用的merge的普通合并 git log 所有日志记录
-变基 只看到合并的那条 是否显示之前分支的版本记录 不想显示就用它 会简洁一些
# 你知道git flow吗?
-知道,但是我们没用
-我们用的就是master,dev,bug分支模型