美文网首页
一次git翻车事件

一次git翻车事件

作者: 新世界的冒险 | 来源:发表于2021-12-08 15:06 被阅读0次

事情起因:迭代结束后进行代码审查,我直接在本次已经结束的开发分支branch-1.3.1上对代码进行了优化,且本地commit了几次,后发现一些路由命名与文件不符,进行修改;
当前需求:支队最后一次commit的文件push即router/index.js;
初始思路:以为和svn一样,只要在当前文件夹下就只提交当前文件,结果将之前所有优化的内容都进行了提交。
出现的问题:导致了已经完结的分支branch-1.3.1的不纯洁性和不确定性;
解决方案:摘樱桃 cherry-pick
第一步:首先在当前本地的branch-1.3.1基础上创建一个新的分支,保存当前代码

git checkout branch-v1.3.1copy
image.png

第二步:将分支branch-v1.3.1回滚到当前迭代的版本

git reset --hard 139dcfaa558e3276b30b6b2e5cbbb9c00bbdca96
image.png

到此为止分支branch-v1.3.1已经与远程保持一致
结果接下来进行了脑残行为进行了第三步

第三步:将之前优化的版本进行摘樱桃到branch-v1.3.1
切换到branch-v1.3.1分支,然后将branch-v1.3.1copy中优化的版本哈希值拷贝即实现摘樱桃

 git cherry-pick 42249fd7ce9e83f154f48afb5d416e75f0b408ba
image.png

摘樱桃具体用法如下

//合并一次提交
git checkout B分支
git cherry-pick A的某次提交的哈希值(git log 可以看)
//如果合并A分支最近一次的提交也可以
git cherry-pick A

//合并多个提交
git cherry-pick A1 A2   //A1 A2是提交的哈希值(git log 可以看)
或
git cherry-pick A1.. A3  //从A1到A3都合并过来,不包含A1
或
git cherry-pick A1 ..A3 //包含A1

//其他命令
1、发生冲突后放弃合并,回到操作之前的状态
 git cherry-pick abort 
2、发生冲突后,退出cherry-pick 但不回到操作之前的状态
 git cherry-pick --quit

第三步纯粹是走了回头路,我需要提交的内容依然无法提交
最终又重新回到起点,将branch-v1.3.1进行回滚,然后摘樱桃只摘修改路由的那个哈希值,然后进行提交

其他操作:
过程中创建新分支命名不混乱,又进行删除分支

// 删除本地分支
git branch -d branchv.1.3.1copy(分支名)
// 发现没成功
// 强制删除 (成功)
git branch -D branchv.1.3.1copy(分支名)

总结:此次翻车事件纯属操作不规范,当迭代结束后不应该修改当前分支代码,除非一些不大的操作且紧急,如果只是自己对代码进行优化应该新创建一个分支进行操作,待下一个迭代进行合并提交

相关文章

网友评论

      本文标题:一次git翻车事件

      本文链接:https://www.haomeiwen.com/subject/pjdtfrtx.html