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

相关推荐
咚咚?1 小时前
基于gitlab 构建CICD发布到K8S 平台
容器·kubernetes·gitlab
Franklin8 小时前
VS 版本更新git安全保护问题的解决
git
我是一只代码狗12 小时前
idea中合并git分支
git
我是一只代码狗12 小时前
idea中使用git
git·gitee·github
恋喵大鲤鱼12 小时前
git restore
git·git restore
李少兄13 小时前
Git Commit Message写错后如何修改?已Push的提交如何安全修复?
git·安全
Fireworkitte13 小时前
git stash
git
pe7er1 天前
git submodule简易指南
git
xiaocainiao8811 天前
Python 实战:构建 Git 自动化助手
git·python·自动化