Git(2)

一、协同开发

多人合作开发一个项目(多人公用一个远程仓库),下面就拿路飞后台项目为例

# 第一步:创建工作区,初始化仓库
git init

# 第二步:设置忽略文件
.idea
.DS_Store
/script
/logs/*.log
__pycache__

# 第三步:提交到暂存区,再提交到版本库
git add .
git commit -m '第一次提交,写完了首页功能'
    
# 第四步:gitee远程新建一个远程仓库(空)
# 创建一个origin
git remote add origin git@gitee.com:pocohy/luffy_api.git
# 把本地仓库代码推送到远程仓库
git push origin master

        
# ---------------以上操作可能是你领导做好了-----------------
首先,项目的拥有者,会把新来的人加成项目的协同开发者
然后,我们(开发者)需要将代码克隆下来 
# 克隆代码
git clone https://gitee.com/pocohy/luffy_api.git
# 开发新功能,假设我们开发了个s1.py的功能
git add .
git commit -m '新增了s1.py'
git push origin master 
# 注意:推送到远程仓库时,1.用户名密码,2.对仓库有写权限

# 在提交之前一定要先拉一下代码,保证本地版本库跟远程保持一致,是最新
# (以后只要提交代码,都要拉一下,没事就拉一下,保证出现冲突概率小)
git pull origin master
# 然后再提交到远程仓库
git push origin master

二、线上bug分支解决方案

'''
1.我们开发了一个产品,主功能已上线,现在服务器运行版本是v2
2.然后我们决定开发新功能,于是乎使用dev分支开发
3.忽然发现V2版本有bug,所以我们新建一个bug分支(基于master分支建立bug分支)
4.我们开始改bug,把变更提交到bug分支,然后测试
5.测试完毕合并到master主分支上,这个版本叫v2.1
6.dev分支的新功能开发完了,要合并到master分支,这个版本叫v3
(dev分支和master分支合并,可能会有冲突,也可能没有)
'''

2.1 解决bug,开发新功能,不出冲突的情况

git branch dev  # 本地新建dev分支
git checkout dev  # 切换到了dev分支(此时远程仓库没有这个分支)
git push origin dev  # 把本地dev分支推到远程

# 开发新功能
vi ss1.py
git add .
git commit -m 'dev开发了用户功能'
git push origin dev   # 把本地dev的更改提交到远程dev

# 继续开发新功能
vi ss1.py  # 加入了一行
git add .
git commit -m 'dev开发了订单'
git push origin dev   # 把本地dev的更改提交到远程dev

# 测试发现线上系统有bug,去修复bug
# 基于master建一个bug分支
git checkout master  
git branch bug
git checkout bug  # 切换到bug分支

vi ss2.py  # 写点代码
git add .
git commit -m 'bug分支修复了'
# 本地bug合并到master
git checkout master
git merge bug   # 不会出冲突
git push origin master # 把本地master推送到远程master,最新v1.11版本发布

# 切回到dev继续开发
git checkout dev
# 又增加了代码


# 把dev合并到master
git checkout master
git merge dev  # 不会冲突

git push origin master   # 不会冲突,最新版本发布

2.2 解决bug,开发新功能,出冲突的情况

# 把所有分支都删除
git branch dev
git checkout dev
vi common.py  # 写入代码
git add .
git commit -m 'dev增加了common.py'

# 线上出bug
git checkout master
git branch bug
git checkout bug
vi common.py  # 写入代码
git add .
git commit -m 'bug分支增加了common.py'

# 把bug更改合并到master上
git checkout master
git merge bug    # 不会冲突


# 把dev分支合并到master(冲突)
git merge dev   # 出冲突
# 解决冲突 (该删删,该留留)

git add .
git commit -m '解决冲突'
git push origin master

三、冲突解决

3.1 多人在同一分支协同开发导致冲突

# 员工张三在s1.py第二行增加了一句
print('hello world')
# 然后提交到远程仓库

# 员工李四在本地,没有及时拉代码,在s1.py第二行增加了一句
print('hello world')
# 然后李四从远程仓库拉取代码,就会出现冲突,代码如下
<<<<<<< HEAD   # 开始,下面是李四的代码
print('hello world')
=======  # 李四的代码结束,下面是张三的代码
print('hello world')
>>>>>>> 2e8da99c75814f197f7909d1cf7816adfc4ccd81 # 张三代码结束(后面的数字+字母是版本号,可以通过版本号查询是谁提交的)

'''
冲突的两种解决办法
1.如果冲突是同一个功能,跟同事商量,保留某一个人的
2.如果冲突不是同一个功能,保留俩人代码
'''
git add .
git commit -m '解决冲突'
git pull origin master  #正常来讲不会有冲突(存在冲突问题)
git push origin master

3.2 分支合并导致冲突

# 操作就是2.2的操作

四、线上分支合并(pr)

'''
现在我们有master分支和dev分支(本地和远端都有)
所有人在dev分支开发(有可能出冲突)
现在我们需要合并分支,把dev合并到master上
之前我们使用的方法是本地合并,dev合并到master,然后提交master到远端
现在我们可以学习新方法!
在线上完成dev合并到master---》提交一个pull request,简称pr
'''

# 本地创建dev,提交到远程
git branch dev  # 创建一个dev分支
git checkout dev  # 切换到dev分支里(创建一个s1新文件,提交到本地仓库)
git push origin dev  # 把dev提交到远程仓库


# 在线上完成分支合并
'''
在gitee上切换到dev分支,然后点击 +Pull Request 的按钮
源分支是需要合并的dev,目标分支就是被合并的master分支,写好标题内容,提交
然后经过领导测试、审核,就可以合并分支了
'''

五、远程仓库回滚

# 切换到master分支
git checkout master
# 本地恢复到最初状态
git reset --hard 07f84def3eaa1e4264d16936b699582f7e9d2555版本号

# 提交到远端(强制提交)
git push origin master -f  # 一般不要用

六、使用pycharm操作git

posted @ 2021-11-11 21:03  黑影Poco  阅读(47)  评论(0)    收藏  举报