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

相关推荐
csdn_aspnet6 小时前
Git灾难级误操作抢救手册:从reset到reflog的终极救援
git·恢复·误删
2401_891655818 小时前
Git + 云原生:如何管理K8s配置版本?
git·云原生·kubernetes
m0_528174459 小时前
Git对象存储原理(blob/tree/commit) 引用日志(reflog)
大数据·git·elasticsearch·全文检索
无限进步_9 小时前
【C++】单词反转算法详解:原地操作与边界处理
java·开发语言·c++·git·算法·github·visual studio
Wzx19801212 小时前
Git分布式版本控制工具
git
whale fall1 天前
git add、git commit、git push 的区别和联系
git
倾云鹤1 天前
Git同时推送多个远程仓库
git
sdm0704271 天前
基础开发工具git,gdb
git
1candobetter1 天前
GitLab 项目创建与分支管理全流程
gitlab
胡琦博客1 天前
如何同步远程分支到本地(远程有些分支已经删除了)
git