25 | 玩转Git:五种提高代码提交原子性的基本操作
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
本文详细介绍了Git支持原子性的5种基础操作,旨在帮助开发者提高代码提交的原子性,从而提升团队的研发效能。作者首先强调了代码提交的原子性对团队协作的重要性,然后通过实际代码示例演示了如何使用git add -p命令将工作区中的代码拆分成多个提交,并介绍了对当前提交进行拆分的方法。另外,还介绍了修改当前提交和交换多个提交的先后顺序的操作方法。通过这些基本操作,读者可以更灵活地对代码提交进行修改、拆分、合并和交换顺序,为使用Git实现代码原子性的工作流打好基础。文章内容深入浅出,适合想要提高代码提交原子性的开发者阅读。文章还提到了一些思考题,引发读者思考和讨论。整体而言,本文对Git支持代码提交原子性的基本操作进行了全面而实用的介绍,对于想要提升团队研发效能的开发者具有重要参考价值。
《研发效率破局之道》,新⼈⾸单¥59
全部留言(10)
- 最新
- 精选
- 我来也git rebase -i 确实很好很强大,哈哈! 课后思考题 1.git cherry-pick 应该可以间接实现 2.git push -f / git rebase 已提交的代码后再git push -f 是危险操作。 人少时,吼一嗓子,再使用。人多时还是放弃吧。哈哈! 可是我经常这么干。🤦♂️ git push -f 后,轻则已拉取代码回本地的人需要手动修复下环境,重则之后推送的分支会被丢失。 (别人以为已经提交了,哪知还有人敢强推代码) 如果时间久了,别人本地分支也没留记录,可能代码就需要手敲了。(概率很小,但也可找回历史提交)
作者回复: 看来@我来也 是git的高手呀!分析得非常到位。👍👍👍
2019-10-2338 - 雷霹雳的爸爸思考题留言区有同学已经答得很帅了,想了下就是做不到答得更好,只对第二个问题大概做一下补充,其实这个本体本质上还是git rebase和远端库共享的潜在冲突的问题,所以从这一点上讲,远端是fork的私库,任何共享都是基于TBD的CI基础上完成就非常重要了,对发布出去的东西,还是得注意品质,后悔药在git世界里不是没有,只是可能会让大家都很痛苦,发出去的东西就当泼出去的水,一路向前,不要回头 其实进来这里就是纯赞的,我本来以为我经常PR之前用git rebase -i仔细梳理就算是会了git了,但是看第一个场景git add -p我就直接跪了,也许以前见过,但是真没印象,一点也没有,我甚至没想过还可以这么干,虽然我不太认同这么部分的管理更新吧,要做这种部分提交,我觉得很大程度上是设计上没太想好,自己本地库这里还在debug的感觉;但是git的强大真的可见一斑
作者回复: git add -p 我个人还是常用的。因为在写代码的时候,常常会看到一些小的地方需要修改,就顺手改了。但是在产生提交的时候又不合适放到一个提交里,所以用git add -p 去分开。 另外TUI的git工具tig有一个命令`1`可以非常方便地进行git add -p的操作,可以一行一行的进行挑选。所以拆分也很方便。
2020-01-1625 - Jxin1.很棒,历史提交操作这块以前没概念,一直都是手动来,导致增加很多提交,学习了,练习下应用到工作去。 2.现在工作主要用idea,用git的拉推提交回滚啥的简单操作都是直接在idea上。涉及到拆分提交这类操作就要切命令行敲git 指令。感觉操作不连贯。老师工作中是纯命令的吗?这些操作跟idea是否有对应?如果有应该怎么做? 3.git-history,小工具,但看历史变更更直观,推荐使用。
作者回复: 我大部分的Git操作是在命令行中。主要使用原生的Git命令,以及tig,还有gitin。在VSCode中使用Git Graph插件做一些读历史提交的工作。 IDEA我最近没有高频使用。以前使用的时候也没有大量使用它的GUI的Git部分。 git-history,你指的是这个吗? https://github.com/pomber/git-history
2019-10-2132 - 许童童思考题 可以通过强制push: git push -f 覆盖掉在远程的分支,不过这样做确实很危险。
作者回复: 是的。可以在本地修改git历史,然后git push -f推送到远端共享分支。 再追问一步,这样做的危险性是什么呢?
2019-10-22 - 二狗没用过 没看懂(╥╯^╰╥) 看来还得拿栗子实践一下
作者回复: Git很好玩的 :)
2019-10-21 - 一打七老师操作四说交换AB后,重新有选择地放到 origin/master 上面。但结果是放到master,并不是origin/master,是不是表述的不够严谨?2023-10-31归属地:北京
- BBQ老师,不知道是不是我的理解有问题 >同时,在没有接–hard 或者–soft 参数时,git reset 会把目标提交的内容同时复制到暂存区,但不会复制到工作区。 我看了您的控制台输出 ,我自己也试了一下,reset 之后,之前Commit 的修改会全部复制到工作区,不是复制到暂存区,reset 之后暂存区并没有内容。 多谢!2021-05-08
- 巫山老妖git rebase的操作,我们大多是在合并分支的时候用到,用于原子性提交确实日常没怎么用,因为要让大部人做到原子性提交还是件不容易的事情2021-04-16
- 送普选简单用过git,有个问题,若只提交到本地分支,不推送到远程分支,若本地电脑硬盘故障代码就丢失了,每日多次推送会减少损失,但从远程还是没有最近没推送的代码。请问葛老师我理解对吗?这种情况如何解决?谢谢!2021-02-092
- scguo给推荐一个git的学习工具,https://github.com/Gazler/githug2020-12-21