Git 的诞生是一个非常有趣的故事。1991年 Linus 开源了 Linux 内核,无数 Linux 爱好者在世界各地为 Linux 编写代码,那么问题来了,这些代码该如何管理呢?起初 Linus 使用 BitKeeper(BitMover 公司的版本控制软件)管理 Linux 的核心开发,后来 BitMover 停止了对 Linux 的支持,于是 Linus 秉承自己的版本自己写的精神,花了两周时间自己用 C 写了一个分布式版本控制系统,这就是 Git。
- 小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开发新功能。
- 小A在我之前把代码提交到了测试分支,我想提交我的新功能代码到测试分支时发现巨多冲突,脑袋瞬间就炸了,Boom一声惊雷响啊。
- 首先解决冲突浪费时间,我的新功能代码每次提测到测试分支都需要解决冲突。
- 我在测试分支解决冲突,只能按照小A优化后的代码逻辑的去解决,和我自己的分支逻辑并不一致。
- 交付给测试同学的测试分支代码,和我自己分支的代码不一致,这种测试是没有意义的。

前两天检视代码时,发现PR里面有两个提交的描述信息一模一样,于是我提出应该将这两个提交合并成一个,保持提交树的清晰。而同事这时正在开发别的特性,工作区不是干净的,没法直接执行 git rebase 操作,于是很自然地执行将正在修改的内容保存到一个栈中,并维持当前工作区干净。这样就可以执行切换分支、变基等操作,这些操作能执行的前提是当前工作区是干净的。
本文将从 Git 入门到进阶、由浅入深,从常用命令、分支管理、提交规范、vim 基本操作、进阶命令、冲突预防、冲突处理等多方面展开,足以轻松应对工作中遇到的各种疑难杂症,如果觉得有所帮助,还望看官高抬贵手给个赞呗,感谢虽说现在工作中使用 Git 都会用一些图形化管理工具来提高开发效率。可事实上使用图形管理化工具的前提,也是基于对命令都基本了解。还有比如我平时用的工具 GithubDesktop 因为不带第三方合并工具,只能手动解决冲突,而且有的功能没有,只能配合自己手动敲命令。即使是工具也没有那么完美的工具,掌握命令才是渔,工具只是鱼。其他的 Git 可视化管理工具比如:小乌龟、SourceTree、还有我们开发用的 IDE 集成的,本期就不过多介绍了
最近,团队新入职了一些小伙伴,在开发过程中,他们问我 Git 分支是如何管理的,以及应该怎么提交代码?我大概说了一些规则,但仔细想来,好像也并没有形成一个清晰规范的流程。所以查了一些资料,总结出下面这篇文章,一共包含四种常见的分支管理策略,分享给大家。
git 在实际开发过程中的重要性对在座的各位来说想必不用我过多赘述,但是对于 git 中千千万万复杂的命令来讲,在实际开发过程中只有小部分是最经常使用的,今天国庆节第一天,由于疫情原因没回家。闲着没事就给大家总结一下在实际工作中我个人最最最最经常使用的命令,并且我会结合我日常工作流程来讲解。tips:就不过多介绍 git add-commit-push 这三个命令了最近要把前端 react 项目部署到私有服务器上,研究了好几种持续部署方案,这里简单描述一下。编译后的文件部署,就是先在本地进行npm run build打包,生成 build 文件夹,然后将 build 文件夹传到服务器,再用 Nginx 配置一个静态解析即可。这种方案用 rsync 直接上传就可以,这里不赘述。$ npm install && npm run build
这种方式是将打包工作交给服务器(或其他构建工具),本地只是将源代码 push 上去,git 监听到推送然后自动开始构建。这是现在流行的方式,大多数持续集成工具都是这么干的。今天的重头戏来了!我们不借助其他构建工具,只用纯 Git 实现监听 push 并自动构建。相信我,这一步非常有趣~- 使用 git rebase 让提交记录更加清晰可读
- 使用 git reflog + git reset 跳到任意 commit
- 使用 git cherry-pick 获取指定的 commit
- 使用 git commit --amend 更改提交内容
-

git 配置以及替换 gerrit 默认 commit-msg hook 为了提交记录便于识别,配置中文名,邮箱配置成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 思否社区 和文章作者展开更多互动和交流,“
公众号后台“回复“ 入群 ”即可加入我们的技术交流群,收获更多的技术文章~