【菜狗前端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 分支的最新代码合并到你的工作分支,并提交到远程仓库。)

相关推荐
每天八杯水D4 小时前
Git完整使用经历
git
xianwu5437 小时前
反向代理模块。开发
linux·开发语言·网络·c++·git
前端_库日天8 小时前
部署自己的git托管平台
git·ubuntu·docker
神仙别闹10 小时前
基于C#实现的(WinForm)模拟操作系统文件管理系统
java·git·ffmpeg
墨理学AI18 小时前
GitHub 桌面版配置 |可视化界面进行上传到远程仓库 | gitLab 配置【把密码存在本地服务器】
gitlab·github·github 桌面版
月如琉璃20 小时前
1.gitlab 服务器搭建流程
服务器·gitlab
刘大辉在路上20 小时前
突发!!!GitLab停止为中国大陆、港澳地区提供服务,60天内需迁移账号否则将被删除
git·后端·gitlab·版本管理·源代码管理
落落鱼20131 天前
cenos如何升级git到2以上版本
git
Domain-zhuo1 天前
Git常用命令
前端·git·gitee·github·gitea·gitcode