当前位置:   article > 正文

Idea 开发环境不断切换git代码分支导致冲掉别人代码

Idea 开发环境不断切换git代码分支导致冲掉别人代码

目录

问题分析

分支随意切换

本地master未做更新就合并

解决方法

sourcetree

Idea stash unstash 暂存和还原

cherry-up 遴选代码

保持良好的代码基线

杜绝问题再次出现

Git分支说明

如何合并master分支

功能分支不合并/origin/*分支


问题分析

分支随意切换

使用git reflog查看执行命令,以下是发生事故的切换和提交动作

  1. 46f72622e1 HEAD@{41}: commit: feat: 【Sales - 6.3】小程序端不登录也可以录入客户线索
  2. c5e7d9f6e1 HEAD@{42}: fetch origin feature/20240102_Sales6.3_xingang:feature/20240102_Sales6.3_xingang --recurse-submodules=no --progress --prune: fast-forward
  3. 2b8fa87fb5 HEAD@{43}: checkout: moving from develop to feature/20240102_Sales6.3_xingang
  4. 12c545fd29 HEAD@{44}: merge feature/20240102_Sales6.3_xingang: Merge made by the 'recursive' strategy.
  5. 9ff4b93056 HEAD@{45}: checkout: moving from feature/20240102_Sales6.3_xingang to develop
  6. 3648003300 HEAD@{46}: commit: feat: 【Sales - 6.3】调整积分发放事务处理
  7. fa49330927 HEAD@{47}: checkout: moving from develop to feature/20240102_Sales6.3_xingang

由于在feature分支和develop分支之前不停切换,导致服务器端git仓库的代码被删除了。作为一个Java老鸟,遇到这种情况还是很尴尬的。如下图红框部分的代码是将别人提交的代码直接改回去了,导致代码丢失!!!!

以上都是因为不规范操作导致代码切换出现的代码丢失,如何避免呢?暂时只有一种stash和unstash的暂存和还原的方法来解决。Idea并没有不让你未提交代码就必须不能切换本地分支,不断切换分支就有可能导致代码不一致的情况。

在上面很清晰看到一个别人的merge操作。此后我们再去提交的时候就是将自己本地的代码覆盖上同一个分支。此时再commit & push ,那么灾难就降临了。

本地master未做更新就合并

 本地master分支未更新,直接合并远程服务器端的/origin/master ,此时产生了一大堆文件changes,这里数量坑定超纲了。怎么可能有几百个文件的改动?

 这里合master的误区就在于 认为远程服务器端的/origin/master 是最新的代码,实际合并代码时走的应该还是本地master分支。所以,切记要更新本地master。

解决方法

sourcetree

sourcetree可以很明确地知道分支代码能不能够切换,凡是代码有冲突 有修改的都要处理完成了才能切换分支。

Idea stash unstash 暂存和还原

Idea 项目选中,右键git就有 stash changes 和unstash changes.

cherry-up 遴选代码

在什么分支修改,就提交到什么分支,然后再将这个提交选入到功能分支。

保持良好的代码基线

每次合并分支之前找到基本检出分支,如master,先合并master再合并到其他分支,避免一堆冲突,容易合错代码。

杜绝问题再次出现

Git分支说明
  • GIT 初始化:本地默认分支叫 master、服务器默认名为 origin
  • 本地创建新工程
  • 本地工程更新、同步到本地分支 master
  • 本地分支 master 同步到服务器上、服务器节点变成 orgin/master
  • 本地创建分支名为 branch
  • 更新本地分支 branch
  • 本地分支 branch 同步到服务器上、服务器节点变成 orgin/branch
  • 更新本地分支 master
  • 用本地分支 master 更新服务器节点 orgin/master
  • 本地分支branch合并到主干 master
如何合并master分支

本地master分支未更新,直接合并远程服务器端的/origin/master ,此时产生了一大堆文件changes,这里数量坑定超纲了。怎么可能有几百个文件的改动?

 这里合master的误区就在于 认为远程服务器端的/origin/master 是最新的代码,实际合并代码时走的应该还是本地master分支。

本地分支 master 同步到服务器上、服务器节点变成 orgin/master。

本地分支 master 同步到服务器上、服务器节点变成 orgin/master。

本地分支 master 同步到服务器上、服务器节点变成 orgin/master。

请记住,先将master更新之后在做合并操作!!!!

请记住,先将master更新之后在做合并操作!!!!

请记住,先将master更新之后在做合并操作!!!!

请记住,先将master更新之后在做合并操作!!!!

当代码还原到2024/1/31 20:39这个时刻,奇迹出现了:回归到线性提交状态!!!

更新本地master 然后再次合并master,此时不会再有问题:

至此,问题得以解决,也提醒自己要注意工作干细致了,一个坑里反复入坑。

不要因为细节导致出现愚蠢而低级的错误再次发生!!!!!

不要因为细节导致出现愚蠢而低级的错误再次发生!!!!!

不要因为细节导致出现愚蠢而低级的错误再次发生!!!!!

功能分支不合并/origin/*分支

在合并代码的时候,请务必将需要合并的分支检出到本地,然后更新之后再进行合并。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号