首页 > 其他分享 >git协同开发时冲突解决

git协同开发时冲突解决

时间:2022-11-20 18:46:13浏览次数:44  
标签:协同 dev git master 冲突 bug 分支

1. 协同开发

# 多人合作开发一个项目---》多人公用一个远程仓库

1. 创建工作区 git init
2. 设置忽略文件.gitignore .idea .DS_Store /script /logs/*.log __pycache__

3. git add .  # 把工作区发生变化的提交到暂存区
4. git commit -m '第一次提交,写完了首页功能'  # 把暂存区所有的数据提交到版本库

5. 远程新建一个远程仓库(空) 创建一个origin git remote add origin 远程仓库地址 6. 把本地仓库代码推送到远程仓库 # -u表示缓存,以后只需要敲 git push 代指git push origin master git push origin master 已经配了ssh,不需要任何认证 ---------------以上操作可能是领导做好了----------------- 如果我是项目的拥有者,把新来的人加成项目的协同开发者。 如果是开发者: 1. 克隆代码 git clone 仓库地址 2. 开发新功能 -s1.py # 在pycharm中新建文件,点击add后,以后只要是新建,就直接提到暂存区了,显示为绿色 -git add . -git commit -m '新增了s1.py' # 推送远端: -git push origin master # 1 输入用户名密码(走https协议时) 2 对仓库有写权限(如果没有让领导给打开) -(推之前注意!!) # 在提交之前一定要先拉一下代码,保证本地版本库跟远程保持一致,是最新的 -git pull origin master(以后只要提交代码,都要拉一下,没事就拉一下,保证出现冲突概率小) -git push origin master

 2. 线上bug分支解决方案

# 主功能以上线,现在服务器运行版本是v1.1
# 开发着新功能--》dev分支开发
# 忽然发现有bug---》新建一个bug分支(基于master分支建立bug分支)
    -改bug
    -把变更提交到bug分支---》测试---》合并到master--》v1.1.1
   
# 新功能开发完了---》要合并到master分支---》v1.2

# dev分支和master分支合并,可能会有冲突,也可能没有

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

git branch dev    # 创建dev分支
git checkout dev  # 本地建立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    # 切换到master分支
git branch bug    # 创建bug分支
git checkout bug  # 切换到bug分支

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

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


# 把dev合并到master
git checkout master    # 切换到master分支
git merge dev  # 合并分支,把本地dev合并到本地master。不会冲突

git push origin master   # 把本地master推送到远程master,不会冲突,最新v1.2版本发布

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

# 把所有分支都删除
git branch -d dev    # 删掉本地dev分支(远端的dev没有删)
git branch -d bug    # 删掉本地bug分支(远端的bug没有删)

# 创建dev分支
git branch dev
git checkout dev
vi common.py  # 建一个common.py文件,写入代码后保存
git add .
git commit -m 'dev增加了common.py'

# 线上出bug,创建bug分支
git checkout master    # 要先切到master分支
git branch bug
git checkout bug
vi common.py  # 建一个common.py文件,写入代码后保存
git add .
git commit -m 'bug分支增加了common.py'

# 把bug更改合并到master上
git checkout master    # 先切到master再合并
git merge bug    # 合并分支。不会冲突。合并后master分支上就有了一个common

# 把dev分支合并到master(冲突)
git merge dev   # 现在出冲突。
# 出冲突后,就解决冲突 (该删删,该留留)
因为master上有了一个common,现在dev又有一个common, 合上去的时候,如果不是同一个功能,
就把<<<<<<<、=======、>>>>>>>删除,把代码都留着。要是写的是同一个功能,就看删掉谁的代码。

# 提交到本地
git add .
git commit -m '解决冲突'

# 把本地master推到远程
git push origin master

3. 冲突解决

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

# 1 多人在同一分支协同开发导致冲突
    -张三在s1.py第二行增加了一句
       -print('hello world')
        -提交到远程仓库
    -李四在本地,没有拉代码,在s1.py第二行增加了一句
        -print('hello world')
        -从远程仓库拉取代码,就会出现冲突
         <<<<<<< HEAD   # 开始,下面是你的代码
         print('aaasdasd')
         =======        # 你的代码结束,下面是别人代码
         print('666')
         >>>>>>> 2e8da99c75814f197f7909d1cf7816adfc4ccd81 # 别人代码结束,版本号
            
    -如果冲突是同一个功能,跟同事商量,保留某一个人的
    -如果冲突不是同一个功能,保留俩人代码
            
   -git add .
   -git commit -m '解决冲突'
   -git pull origin master  #正常来讲不会有冲突(但也有存在冲突问题)
   -git push origin master
    
    
# 注意不要没解决冲突就提交!

3.2 分支合并导致冲突

# 操作就是2.2的操作

标签:协同,dev,git,master,冲突,bug,分支
From: https://www.cnblogs.com/tully/p/16908797.html

相关文章

  • Github网站打Tag方法
    热烈欢迎,请直接点击!!!进入博主AppStore主页,下载使用各个作品!!!注:博主将坚持每月上线一个新app!!!登录GitHub,右侧点击【Releases】,输入Tag,比如【1.0.0】,点击【Createnewta......
  • Github添加CocoaPods公开库
    热烈欢迎,请直接点击!!!进入博主AppStore主页,下载使用各个作品!!!注:博主将坚持每月上线一个新app!!!一、上传写好的库到github1.在github上创建一个仓库 2.将仓库拉倒本地......
  • linux下git升级
    安装需求: 1.​​>#yuminstallcurl-develexpat-develgettext-developenssl-develzlib-develasciidoc​​2.​​>#yuminstallgccperl-ExtUtils-MakeMaker​......
  • github加速器 FastGithub的安装与使用
    github加速器FastGithub的安装与使用国内访问github网址不稳定,时而可以访问时而访问失败,找到了一个稳定的方法来访问,通过FastGithub加速来进行访问工作原理修改本机......
  • git提交代码的流程
    PSE:\weixin\app-uni>gitcheckout-bsearchSwitchedtoanewbranch'search'PSE:\weixin\app-uni>gitstatusOnbranchsearchnothingtocommit,workingtreecl......
  • Fiddler收费没得用?这款抓包神器 Github star 过万,一个字:香
    关于抓包,那是测试人员必备技能之一了,通常我们会通过一些抓包工具来辅助我们测试、定位bug。我最早接触并使用的就是fiddler,不过目前最新版本已经要开始付费了,以前很老的......
  • 云原生之旅 - 14)遵循 GitOps 实践的好工具 ArgoCD
    前言ArgoCD 是一款基于kubernetes的声明式的Gitops持续部署工具。应用程序定义、配置和环境都是声明式的,并受版本控制应用程序部署和生命周期管理都是自动化的、......
  • git 创建新分支
    本地使用checkout命令新建一个空白分支gitcheckout--orphannewBranchName把文件内的内容添加到分支中用gitbranch命令查看,我们在输出结果中是看不到新建的这个分支......
  • Git reset 的hard、soft、mixed参数对比
    目录分区概念1.--soft参数2.--mixed参数3.--hard参数分区概念先要清楚在本地,git会分三个区:工作区、暂存区、本地库。当使用去做版本移动的时候,那么在使用【--hard】......
  • Git基础.TWO(一些简单的操作命令)
    前篇我们讲解了如何创建一个简单的git项目:https://www.cnblogs.com/Ayako/p/16905560.html接下来我们来了解一下git的一些简单操作命令1.了解git的三个区在使用命令操作......