让我们来探讨一下我多年来一直使用的超级简单的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 push
或git 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 的最好方法是多做一些你想要多加练习的实际操作。
- 创建一个包含
main
和dev
分支的仓库。 - 所有的修改都在
dev
分支上进行,满意后再将其合并到main
分支。 - 故意向后回退。
- 再回退一次这个修改。
- 在不同的历史点检出你的分支来探索
git log
。
看看哪些对你说得通,哪些不行,然后再研究一下工作模式,比如特性分支、主分支、Git工作流和变基。
希望这对你有帮助。
我有一个面向正在转行学习编程的人的周播客。点击这里收听 Develop Yourself Podcast。共同学习,写下你的评论
评论加载中...
作者其他优质文章