为了账号安全,请及时绑定邮箱和手机立即绑定

我说,Git 不必复杂。下面是我的超级简单的工作流程,你可以参考一下,来借鉴一下。

标签:
运维 开源 Git

让我们来探讨一下我多年来一直使用的超级简单的Git操作流程,用于提交我的代码、解决复杂问题并节省一些发布时间。

作为一名开发者,你将编写大量代码,但这只是工作的一部分。软件开发是一项团队运动。你将使用 Git 来协调与团队成员的工作,并将你的代码从本地机器发布到线上而不会导致任何故障

可惜的是,大多数人是通过多年的摸爬滚打或从Stack Overflow等网站复制粘贴命令代码来学习Git的用法。

要么你用Git,要么Git用你。

我的差劲的 Git 技能直到我工作了三年才真正给我惹上麻烦。

我最近加入了一家酷炫的科技初创公司作为开发人员。我主动承担了一次代码发布,就像我在之前的文章里推荐的那样。

当晚负责的开发者不在,教了我如何将一个小改动从一个分支合并到生产环境。有几个地方需要修改文本,这些改动是为了法律要求。

就这么简单,我觉得。

他在一间小办公室的白板上草草写了他的 Git 的工作流程,而我努力隐藏我的紧张。

这并不特别复杂,只是和我平时熟悉的不同。

我把每一步过程都详细地记在我的笔记本里,就像是在记录一个神秘咒语一样。

当晚我成功地将一些代码合并到了生产环境。

一个错误:

实际上我合并的是错误的代码。

我的经理那天上午救了我,我们撤回了我的修改并合并了正确的代码内容。

我感到非常尴尬。我也意识到是时候真正弄懂如何使用Git了(Git是一个版本控制系统)。

记得 ≠ 真正明白

我之前使用Git的工作流的问题是,我只是记住了几个命令,用来将我的分支的工作推送至其他分支。

只要遇到稍微复杂一点的事情,我就会乱了套。

我开始关注“什么”,而不是之前的“如何”。

我那次公开出丑是因为我试图直接复制那些命令。这些命令的目的很简单,就是把一个分支的工作合并到另一个分支。

我应该更关注解决问题,而不是git命令顺序的排列,来解决问题。

我花了好几年时间和几次大失误之后,终于学会了适合我的Git使用方法。你不需要像我那样花那么长时间。

就这样,一步步来:

步骤1:清理下你的命令行,你这脏兮兮的家伙。

我用zsh让我的终端更易操作,你也试试吧。

前往 https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH 的 Oh My Zsh 安装指南页面

试试ohmyzsh,让你的开发体验提升十倍。

<https://github.com/ohmyzsh/ohmyzsh title="Oh My Zsh 项目在 GitHub 上">

现在你的终端会显示文件夹中的 Git 分支,这个文件夹里有一个 Git 仓库。

不再猜测你在哪个分支上捣鼓。

我知道这看似微不足道,但实际上绝非如此。在错误的分支上干活可能导致各种麻烦,这些问题解决起来一点都不爽。

想象一下:

  • 你认为自己正在本地分支上工作,并提交了一系列的变更。
  • 你推送了这些变更,才发现它们推送到了 main 分支,客户可能会看到哦!
  • 哎呀 😿

最糟的情况是,你的代码被部署到了生产环境。最好的情况是,你现在不得不回滚所有的这些工作,并将代码放到正确的分支上,这可能需要你一整天的时间。

这里有一段视频展示如何使用 ohmyzsh 为 git 命令创建别名,我知道你会觉得很有用。

👉 点击这里观看哦

学习 Git、Github 以及其他超多的知识和技术,请访问 Parsity.io — 专为转行人士设计的编程课程

使用极简的流程

用你的终端像专业人士那样配置好之后,你就可以开始提交代码了。

不需要太复杂。

我根本不使用任何 Git 的图形用户界面(GUI),GUI 基本上就是您 Git 分支和提交操作的一个漂亮展示界面。

这些都没问题,我就是更喜欢终端。

我多年来一直用的是这个工作流程。

开工了。

  • 克隆仓库 — git clone <repo_url>
  • 创建一个分支来做我的任务 — git checkout -b <branch_name>

zh: 保存我的文件

  • 保存当前工作 — git add . (是的,我会将所有文件添加到保存中 - 很少有文件我不希望被 Git 跟踪)
  • 使用 git commit 提交工作 - 这将打开一个 vim 终端,你的默认文本编辑器。我可以写更长和更详细的提交信息。
  • 要退出 vim esc 然后 shift + : 然后 wq 表示 "写入并退出"
  • 你也可以直接执行 git commit -m 有意义的信息
  • 最后 git pushgit push origin <你想要推送的分支名>

确保我的工作与其他更新同步

  • git pull 来同步我的分支与最新的代码变更
  • git merge <somebranch> 将某个分支的更改合并到我的当前分支中,无论是我没有的更改还是来自另一个分支的更改
  • 有许多冲突? 查找所有 <<< 之类的标记,并根据需要更新相应部分
  • 需要 重新开始合并? 可以使用 git merge --abort

zh: 调试中遇到的问题

  • git log查看之前的提交记录
  • git checkout <commit-hash> 查看历史中的某个提交的分支
  • 哎呀,我得撤销某些提交git revert <commit-hash>
  • 哎呀,其实我想把那个提交恢复回来 git revert <commit-hash-of-the-revert-commit>
  • 之前某个功能一直可以正常运行,但最近好像出问题了git bisect (基本上是一个二分查找来确定是哪个提交出了问题)https://git-scm.com/docs/git-bisect

zh: 杂项内容——超级有用

  • 哎呀,不想现在提交的工作需要稍后再处理 - git stash
  • 现在我想把之前stash的代码拿回来继续工作 - git stash pop
  • 让我切换回我刚刚工作的分支 - git checkout -
  • 我只想要从另一个分支的一个文件 - git checkout <branch_name> -- ./path/to/file
  • 这个工作太烦人了… 把所有的更改取消 - git checkout .
第三步:找到自己的节奏感

我在Instagram上分享了一个较短版本的工作流程时,人们就炸了锅。

“你显然没做过真正的软件开发。”

“这简直就是灾难的开始!”

“老兄,千万别听他的建议。”

网上有不少高手。

对我有用的东西可能并不适用于所有人。练习使用 Git 的最好方法是多做一些你想要多加练习的实际操作。

  • 创建一个包含 maindev 分支的仓库。
  • 所有的修改都在 dev 分支上进行,满意后再将其合并到 main 分支。
  • 故意向后回退。
  • 再回退一次这个修改。
  • 在不同的历史点检出你的分支来探索 git log

看看哪些对你说得通,哪些不行,然后再研究一下工作模式,比如特性分支、主分支、Git工作流和变基。

希望这对你有帮助。

我有一个面向正在转行学习编程的人的周播客。点击这里收听 Develop Yourself Podcast。
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消