SegmentFault 思否技术周刊 Vol.78 — Git 必看技术补给

业界 作者:SegmentFault 2023-01-28 12:08:30
Git 的诞生是一个非常有趣的故事。1991年 Linus 开源了 Linux 内核,无数 Linux 爱好者在世界各地为 Linux 编写代码,那么问题来了,这些代码该如何管理呢?起初 Linus 使用 BitKeeper(BitMover 公司的版本控制软件)管理 Linux 的核心开发,后来 BitMover 停止了对 Linux 的支持,于是 Linus 秉承自己的版本自己写的精神,花了两周时间自己用 C 写了一个分布式版本控制系统,这就是 Git。

本期技术周刊一起了解 Git,欢迎大家阅读 ~

文章推荐



Git 操作不规范,战友提刀来相见! 
作者:王中阳Go
问题描述:
  • 小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开发新功能。
  • 小A在我之前把代码提交到了测试分支,我想提交我的新功能代码到测试分支时发现巨多冲突,脑袋瞬间就炸了,Boom一声惊雷响啊。

分析一下:
  • 首先解决冲突浪费时间,我的新功能代码每次提测到测试分支都需要解决冲突。
  • 我在测试分支解决冲突,只能按照小A优化后的代码逻辑的去解决,和我自己的分支逻辑并不一致。
  • 交付给测试同学的测试分支代码,和我自己分支的代码不一致,这种测试是没有意义的。


好慌,我代码没了!不会是变基变出问题了吧?
作者:Kagol

前两天检视代码时,发现PR里面有两个提交的描述信息一模一样,于是我提出应该将这两个提交合并成一个,保持提交树的清晰。

先储存起来!

而同事这时正在开发别的特性,工作区不是干净的,没法直接执行 git rebase 操作,于是很自然地执行

git stash


将正在修改的内容保存到一个栈中,并维持当前工作区干净。
这样就可以执行切换分支、变基等操作,这些操作能执行的前提是当前工作区是干净的。


工作中如何使用 Git 
作者:沐华

本文将从 Git 入门到进阶、由浅入深,从常用命令、分支管理、提交规范、vim 基本操作、进阶命令、冲突预防、冲突处理等多方面展开,足以轻松应对工作中遇到的各种疑难杂症,如果觉得有所帮助,还望看官高抬贵手给个赞呗,感谢
虽说现在工作中使用 Git 都会用一些图形化管理工具来提高开发效率。可事实上使用图形管理化工具的前提,也是基于对命令都基本了解。还有比如我平时用的工具 GithubDesktop 因为不带第三方合并工具,只能手动解决冲突,而且有的功能没有,只能配合自己手动敲命令。

即使是工具也没有那么完美的工具,掌握命令才是渔,工具只是鱼。其他的 Git 可视化管理工具比如:小乌龟、SourceTree、还有我们开发用的 IDE 集成的,本期就不过多介绍了


Git 分支管理策略汇总 
作者:alwaysbeta

最近,团队新入职了一些小伙伴,在开发过程中,他们问我 Git 分支是如何管理的,以及应该怎么提交代码?

我大概说了一些规则,但仔细想来,好像也并没有形成一个清晰规范的流程。所以查了一些资料,总结出下面这篇文章,一共包含四种常见的分支管理策略,分享给大家。


在实际工作开发中非常实用的几个 git 命令 
作者:FFF方

git 在实际开发过程中的重要性对在座的各位来说想必不用我过多赘述,但是对于 git 中千千万万复杂的命令来讲,在实际开发过程中只有小部分是最经常使用的,今天国庆节第一天,由于疫情原因没回家。闲着没事就给大家总结一下在实际工作中我个人最最最最经常使用的命令,并且我会结合我日常工作流程来讲解。

tips:就不过多介绍 git add-commit-push 这三个命令了


纯 Git 实现前端 CI/CD
作者:believeyourself

最近要把前端 react 项目部署到私有服务器上,研究了好几种持续部署方案,这里简单描述一下。

总的部署思路分两种:

1.编译后的文件部署
编译后的文件部署,就是先在本地进行npm run build打包,生成 build 文件夹,然后将 build 文件夹传到服务器,再用 Nginx 配置一个静态解析即可。这种方案用 rsync 直接上传就可以,这里不赘述。

2.源码部署
源码部署就是把源文件上传到服务器上,然后:

$ npm install && npm run build


这种方式是将打包工作交给服务器(或其他构建工具),本地只是将源代码 push 上去,git 监听到推送然后自动开始构建。这是现在流行的方式,大多数持续集成工具都是这么干的。

今天的重头戏来了!我们不借助其他构建工具,只用纯 Git 实现监听 push 并自动构建。相信我,这一步非常有趣~


工作中使用 Git 解决问题的场景 
作者:山头人汉波

简单来说,就这七点:

  • 使用 git rebase 让提交记录更加清晰可读
  • 使用 git reflog + git reset 跳到任意 commit
  • 使用 git cherry-pick 获取指定的 commit
  • 使用 git commit --amend 更改提交内容
  • 使用 git revert 回滚某次的提交
  • 使用 git stash 来暂存文件
  • 配置 git alias 提升工作效率


git 配置以及替换 gerrit 默认 commit-msg hook 
作者:记得要微笑

Git 配置规范:配置用户名和邮件

为了提交记录便于识别,配置中文名,邮箱配置成gitlab注册邮箱

git config --global user.name "中文姓名"  git config --global user.email "email@[email.com"

示例
user.name 配置规则: name#工号 示例 git config --global user.name "张三#A00003"
user.email 配置规则: 统一使用公司的邮箱。示例 git config --global user.email "san.zhang@casstime.com"



# SegmentFault 技术周刊 #

「技术周刊」是社区特别推出的技术内容系列,一周一主题。

每周更新,欢迎「关注」。大家也可以在评论处留言自己感兴趣的主题,推荐主题相关的优秀文章。



点击左下角阅读原文,到 SegmentFault 思否社区 和文章作者展开更多互动和交流,“公众号后台回复“ 入群 ”即可加入我们的技术交流群,收获更多的技术文章~

- END -

 

延伸阅读
  • SegmentFault 思否写作挑战赛!

    SegmentFault 思否写作挑战赛 是思否社区新上线的系列社区活动,在 2 月 8 日 正式面向社区所有用户开启;挑战赛中包含多个可供作者选择的热门技术方向,根据挑战难度分为多个等级,快来参与挑

  • SegmentFault 思否技术周刊 — 如何优雅的使用 Go ?

    Go 是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。本期技术周刊一起了解 Go,欢迎大家阅读 ~文章推荐Golang 如何优雅接入多个远程配置中心? 作者:王中

  • SegmentFault 思否技术周刊 — 探究关于 iOS 的特性

    本期技术周刊一起探究关于 iOS 的特性,欢迎大家阅读 ~文章推荐探究 iOS 内存问题 作者:杭城小刘本文从 Tagged Pointer、objc 源码、dealloc 原理、Autoreleas

关注公众号:拾黑(shiheibook)了解更多

赞助链接:

关注数据与安全,洞悉企业级服务市场:https://www.ijiandao.com/
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接