【菜狗前端work-git】反合master代码的坑及如何解决避免+提交代码注意事项+git常用命令总结

一、反合master代码的坑及如何解决避免

情景回顾

  1. 分支A:包含功能1、2。

  2. 分支B:包含功能3,且功能3基于功能1。

  3. 小Y的操作

    • 将分支A合进分支B。
    • 删除功能2,保留功能1和功能3。
    • 测试后,合并到master分支并上线。
  4. 小Q的操作

    • 分支A对应版本该上线了。
    • 反合master没有冲突以为没问题,但自测时发现功能2丢失。

问题分析

  • 小Y的操作:将分支A合进分支B并删除功能2,这会导致Git认为功能2已经被删除。
  • 小Q的操作:当小Q在分支A反合master时,Git会认为功能2已经被删除,因此不会重新引入功能2------导致功能2丢失。

解决探索

1、如果基于分支A新建分支A2,将A2中的功能1保留,功能2删除,然后将A2合并入分支B, 并上线合入master。那这个时候分支A再反合master,会保留功能2吗?

不会,这种做法仍然是错误的。

​编辑

解释
  • 合并操作:合并操作会将目标分支(在这里是master分支)的更改应用到当前分支(在这里是分支A)。如果目标分支中已经删除了某个功能,那么这个删除操作也会被应用到当前分支。
  • 比对机制:Git在合并时会比对两个分支的差异,然后将差异应用到目标分支。因此,如果master分支中已经删除了功能2,这些删除操作会被合并到分支A中。
  • 无论小Y是在分支A还是A2删除功能2,只要这些更改最终被合并到master分支,小Q反合master时都会丢失功能2 ------ ****即git底层比较与哪个分支删除无关,与代码差异有关。

2、小Y在开发过程中应该手动复制分支A里的功能1

总结: 永远基于线上代码开发 不要基于开发代码开发 就没问题------手动复制代码

同时,提交代码也应该原子性,尽量避免避免同一功能多次提交,减轻手动复制代码工作

二、提交代码注意事项

  1. 先git pull拉取最新代码
  2. 再git add .
  3. git commit -m "xxxx"
  4. git push
  5. 如果有冲突没有push成功,则解决冲突后重新执行2-4步------注意:修改/删除冲突代码的时候一定要问一下写这个代码的同事,确定是否能够这样修改/删除,避免误删/修改出错
  6. 成功提交并推送代码

三、git常用命令总结

  • 首次要配置user.name和user.email
  • git clone
  • git checkout 分支名 (失败的话通过这个git fetch获取最新分支,git branch -a 获取所有分支(带*的是本地分支),git checkout -b xxx 新建xxx分支)
  • git status (查看修改文件)
  • git pull(避免和别人代码冲突)
  • git add .
  • git commit -m ""
  • git push 或 git push <远程仓库名称> <本地分支名称>:<远程分支名称> ---将本地分支推送到不同远程分支(建本地分支时就已经基于某分支便不需要再写远程分支名,远程仓库:origin)
  • 反合mster代码(如果待上线过程中master有其他版本上线更新的话)
markdown 复制代码
1. 切换到你的工作分支
 git checkout feature-branch
2. 拉取最新的 master 分支代码
 git fetch origin (会从远程仓库 origin 获取所有分支的最新数据,但不会自动合并或修改当前工作目录中的文件)
3. 合并 master 分支到你的工作分支
 git merge origin/master
4. 解决冲突(如果有)
 git add <conflicted-file>
   完成合并
 git commit
5. 推送合并后的代码到远程仓库
 git push origin feature-branch
(通过以上步骤,你可以将 master 分支的最新代码合并到你的工作分支,并提交到远程仓库。)

相关推荐
少年姜太公6 小时前
什么?还不知道git cherry pick?
前端·javascript·git
MatrixOrigin10 小时前
在数据库里玩“平行宇宙”:MatrixOne Data Branch 让数据也拥有Git 的分支/合并/对比/回滚(含跨集群同步)
git·sql·数据分析
VcB之殇11 小时前
git常用操作合集
前端·git
路 西13 小时前
在局域网内共享本地 Git 仓库的方法
git
怣疯knight13 小时前
不小心执行了 git revert,如何恢复到被撤销前的状态
git
weixin_4640780713 小时前
Git实战:如何将当前未提交的修改迁移到新分支
git
喜喜安14 小时前
简述Git的使用
git
kk哥889914 小时前
Git 远程仓库操作
大数据·git·elasticsearch
郑州光合科技余经理18 小时前
实战:攻克海外版同城生活服务平台开发五大挑战
java·开发语言·javascript·数据库·git·php·生活
CNRio19 小时前
Day 2:Git环境搭建全攻略:WindowsmacOSLinux三平台避坑指南
git