git协同开发时冲突解决

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的操作
posted @ 2022-11-20 18:32  Tutu007  阅读(144)  评论(0编辑  收藏  举报