【机器之心】工作流一目了然,看小姐姐用动图展示10大Git命令
选自dev.to
作者: Lydia Hallie
机器之心编译
参与:Panda、杜伟
git merge、git rebase、git reset、git revert、git fetch、git pull、git reflog……你知道这些 git 命令执行的究竟是什么任务吗?如果你还有些分不清楚 , 那千万不能错过这篇文章 。 在本文中 , 熟知 JavaScript、TypeScript、GraphQL、Serverless、AWS、Docker 和 Golang 的 21 岁年轻软件顾问 Lydia Hallie 通过动图形式直观地介绍了这些常用 git 命令的工作过程 , 包你过目不忘 。
本文插图
尽管 Git 是一款非常强大的工具 , 但如果我说 Git 用起来简直是噩梦 , 大多数人也会认同我的说法 。 我发现在使用 Git 时 , 在头脑里可视化地想象它会非常有用:当我执行一个特定命令时 , 这些分支会如何交互 , 又会怎样影响历史记录?为什么当我在 master 上执行硬重启 , force push 到原分支以及 rimraf 我们的 .git 文件夹时 , 我的同事哭了?
我觉得创建一些最常用且最有用的 Git 命令的可视化示例会是一个完美的用例!下面我将介绍的很多命令都有可选参数——你可以使用这些参数来改变对应命令的行为 。 而我的示例只会涵盖命令的默认行为 , 而不会添加(或添加太多)可选配置!
本文插图
本文作者Lydia Hallie 。
合并
拥有多个分支是很方便的 , 这样可以将不同的新修改互相隔离开 , 而且还能确保你不会意外地向生产代码推送未经许可或破损的代码修改 。 但一旦这些修改得到了批准许可 , 我们就需要将其部署到我们的生产分支中!
可将一个分支的修改融入到另一个分支的一种方式是执行 git merge 。 Git 可执行两种类型的合并:fast-forward 和 no-fast-forward 。 现在你可能分不清 , 但我们马上就来看看它们的差异所在 。
Fast-forward (—ff)
在当前分支相比于我们要合并的分支没有额外的提交(commit)时 , 可以执行 fast-forward 合并 。 Git 很懒 , 首先会尝试执行最简单的选项:fast-forward!这类合并不会创建新的提交 , 而是会将我们正在合并的分支上的提交直接合并到当前分支 。
本文插图
完美!现在 , 我们在 dev 分支上所做的所有改变都合并到了 master 分支上 。 那么 no-fast-forward 又是什么意思呢?
No-fast-foward (—no-ff)
如果你的当前分支相比于你想要合并的分支没有任何提交 , 那当然很好 , 但很遗憾现实情况很少如此!如果我们在当前分支上提交我们想要合并的分支不具备的改变 , 那么 git 将会执行 no-fast-forward 合并 。
使用 no-fast-forward 合并时 , Git 会在当前活动分支上创建新的 merging commit 。 这个提交的父提交(parent commit)即指向这个活动分支 , 也指向我们想要合并的分支!
本文插图
没什么大不了的 , 完美的合并!现在 , 我们在 dev 分支上所做的所有改变都合并到了 master 分支上 。
合并冲突
尽管 Git 能够很好地决定如何合并分支以及如何向文件添加修改 , 但它并不总是能完全自己做决定 。 当我们想要合并的两个分支的同一文件中的同一行代码上有不同的修改 , 或者一个分支删除了一个文件而另一个分支修改了这个文件时 , Git 就不知道如何取舍了 。
在这样的情况下 , Git 会询问你想要保留哪种选择?假设在这两个分支中 , 我们都编辑了 README.md 的第一行 。
推荐阅读
- 机器人:青岛造运输机器人打败五家外企 成功进驻世界最大中转枢纽港
- 「时间」iPhone se2这机器放在现在这个时间,真的有点奇怪
- #科技如梦#iPhone se2这机器放在现在这个时间,真的有点奇怪
- [机器人]从昆虫身上找灵感,研发人员用3D打印批量制造机器人群 | 硬科技
- 公司:AT&T将提供云平台为XENEX公司的消毒机器人提供物品清洁服务
- 机器之心:几行代码搞定ML模型,低代码机器学习Python库正式开源
- 「机器人」科学家使用集成神经网络改变机器人步态
- #3DMGAME#索尼申请陪玩机器人专利 能感知玩家情感并做出反馈
- 「」2.5D视觉系统“Eyes”实现机器人应用的极致简易操作
- ■广东领先!工业机器人领域专利申请量占全国28%