一目了然,小姐姐用动图展示 10 大 Git 命令

这篇具有很好参考价值的文章主要介绍了一目了然,小姐姐用动图展示 10 大 Git 命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

来源:机器之心

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 命令的工作过程,包你过目不忘。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

尽管 Git 是一款非常强大的工具,但如果我说 Git 用起来简直是噩梦,大多数人也会认同我的说法。我发现在使用 Git 时,在头脑里可视化地想象它会非常有用:当我执行一个特定命令时,这些分支会如何交互,又会怎样影响历史记录?为什么当我在 master 上执行硬重启,force push 到原分支以及 rimraf 我们的 .git 文件夹时,我的同事哭了?

我觉得创建一些最常用且最有用的 Git 命令的可视化示例会是一个完美的用例!下面我将介绍的很多命令都有可选参数——你可以使用这些参数来改变对应命令的行为。而我的示例只会涵盖命令的默认行为,而不会添加(或添加太多)可选配置!

一目了然,小姐姐用动图展示 10 大 Git 命令,python

_本文作者Lydia Hallie。
_

合并

拥有多个分支是很方便的,这样可以将不同的新修改互相隔离开,而且还能确保你不会意外地向生产代码推送未经许可或破损的代码修改。但一旦这些修改得到了批准许可,我们就需要将其部署到我们的生产分支中!

可将一个分支的修改融入到另一个分支的一种方式是执行 git merge。Git 可执行两种类型的合并:fast-forward 和 no-fast-forward。现在你可能分不清,但我们马上就来看看它们的差异所在。

Fast-forward (—ff)

在当前分支相比于我们要合并的分支没有额外的提交(commit)时,可以执行 fast-forward 合并。Git 很懒,首先会尝试执行最简单的选项:fast-forward!这类合并不会创建新的提交,而是会将我们正在合并的分支上的提交直接合并到当前分支。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

完美!现在,我们在 dev 分支上所做的所有改变都合并到了 master 分支上。那么 no-fast-forward 又是什么意思呢?

No-fast-foward (—no-ff)

如果你的当前分支相比于你想要合并的分支没有任何提交,那当然很好,但很遗憾现实情况很少如此!如果我们在当前分支上提交我们想要合并的分支不具备的改变,那么 git 将会执行 no-fast-forward 合并。

使用 no-fast-forward 合并时,Git 会在当前活动分支上创建新的 merging commit。这个提交的父提交(parent commit)即指向这个活动分支,也指向我们想要合并的分支!

一目了然,小姐姐用动图展示 10 大 Git 命令,python

没什么大不了的,完美的合并!现在,我们在 dev 分支上所做的所有改变都合并到了 master 分支上。

合并冲突

尽管 Git 能够很好地决定如何合并分支以及如何向文件添加修改,但它并不总是能完全自己做决定。当我们想要合并的两个分支的同一文件中的同一行代码上有不同的修改,或者一个分支删除了一个文件而另一个分支修改了这个文件时,Git 就不知道如何取舍了。

在这样的情况下,Git 会询问你想要保留哪种选择?假设在这两个分支中,我们都编辑了 README.md 的第一行。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

如果我们想把 dev 合并到 master,就会出现一个合并冲突:你想要标题是 Hello! 还是 Hey!?

当尝试合并这些分支时,Git 会向你展示冲突出现的位置。我们可以手动移除我们不想保留的修改,保存这些修改,再次添加这个已修改的文件,然后提交这些修改。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

完成!尽管合并冲突往往很让人厌烦,但这是合理的:Git 不应该瞎猜我们想要保留哪些修改。

变基(Rebasing)

我们刚看到可通过执行 git merge 将一个分支的修改应用到另一个分支。另一种可将一个分支的修改融入到另一个分支的方式是执行 git rebase。

git rebase 会将当前分支的提交复制到指定的分支之上。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

完美,现在我们在 dev 分支上获取了 master 分支上的所有修改。

变基与合并有一个重大的区别:Git 不会尝试确定要保留或不保留哪些文件。我们执行 rebase 的分支总是含有我们想要保留的最新近的修改!这样我们不会遇到任何合并冲突,而且可以保留一个漂亮的、线性的 Git 历史记录。

上面这个例子展示了在 master 分支上的变基。但是,在更大型的项目中,你通常不需要这样的操作。git rebase 在为复制的提交创建新的 hash 时会修改项目的历史记录。

如果你在开发一个 feature 分支并且 master 分支已经更新过,那么变基就很好用。你可以在你的分支上获取所有更新,这能防止未来出现合并冲突。

交互式变基(Interactive Rebase)

在为提交执行变基之前,我们可以修改它们!我们可以使用交互式变基来完成这一任务。交互式变基在你当前开发的分支上以及想要修改某些提交时会很有用。

在我们正在 rebase 的提交上,我们可以执行以下 6 个动作:

  • reword:修改提交信息;

  • edit:修改此提交;

  • squash:将提交融合到前一个提交中;

  • fixup:将提交融合到前一个提交中,不保留该提交的日志消息;

  • exec:在每个提交上运行我们想要 rebase 的命令;

  • drop:移除该提交。

很棒!这样我们就能完全控制我们的提交了。如果你想要移除一个提交,只需 drop 即可。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

如果你想把多个提交融合到一起以便得到清晰的提交历史,那也没有问题!

一目了然,小姐姐用动图展示 10 大 Git 命令,python

交互式变基能为你在 rebase 时提供大量控制,甚至可以控制当前的活动分支。

重置(Resetting)

当我们不想要之前提交的修改时,就会用到这个命令。也许这是一个 WIP 提交或者可能是引入了 bug 的提交,这时候就要执行 git reset。

git reset 能让我们不再使用当前台面上的文件,让我们可以控制 HEAD 应该指向的位置。

软重置

软重置会将 HEAD 移至指定的提交(或与 HEAD 相比的提交的索引),而不会移除该提交之后加入的修改!

假设我们不想保留添加了一个 style.css 文件的提交 9e78i,而且我们也不想保留添加了一个 index.js 文件的提交 035cc。但是,我们确实又想要保留新添加的 style.css 和 index.js 文件!这是软重置的一个完美用例。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

输入 git status 后,你会看到我们仍然可以访问在之前的提交上做过的所有修改。这很好,这意味着我们可以修复这些文件的内容,之后再重新提交它们!

硬重置

有时候我们并不想保留特定提交引入的修改。不同于软重置,我们应该再也无需访问它们。Git 应该直接将整体状态直接重置到特定提交之前的状态:这甚至包括你在工作目录中和暂存文件上的修改。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

Git 丢弃了 9e78i 和 035cc 引入的修改,并将状态重置到了 ec5be 的状态。

还原(Reverting)

另一种撤销修改的方法是执行 git revert。通过对特定的提交执行还原操作,我们会创建一个包含已还原修改的新提交。

假设 ec5be 添加了一个 index.js 文件。但之后我们发现其实我们再也不需要由这个提交引入的修改了。那就还原 ec5be 提交吧!

一目了然,小姐姐用动图展示 10 大 Git 命令,python

完美!提交 9e78i 还原了由提交 ec5be 引入的修改。在撤销特定的提交时,git revert 非常有用,同时也不会修改分支的历史。

拣选(Cherry-picking)

当一个特定分支包含我们的活动分支需要的某个提交时,我们对那个提交执行 cherry-pick!对一个提交执行 cherry-pick 时,我们会在活动分支上创建一个新的提交,其中包含由拣选出来的提交所引入的修改。

假设 dev 分支上的提交 76d12 为 index.js 文件添加了一项修改,而我们希望将其整合到 master 分支中。我们并不想要整个 dev 分支,而只需要这个提交!

一目了然,小姐姐用动图展示 10 大 Git 命令,python

现在 master 分支包含 76d12 引入的修改了。

取回(Fetching)

如果你有一个远程 Git 分支,比如在 GitHub 上的分支,当远程分支上包含当前分支没有的提交时,可以使用取回。比如当合并了另一个分支或你的同事推送了一个快速修复时。

通过在这个远程分支上执行 git fetch,我们就可在本地获取这些修改。这不会以任何方式影响你的本地分支:fetch 只是单纯地下载新的数据而已。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

现在我们可以看到自上次推送以来的所有修改了。这些新数据也已经在本地了,我们可以决定用这些新数据做什么了。

拉取(Pulling)

尽管 git fetch 可用于获取某个分支的远程信息,但我们也可以执行 git pull。git pull 实际上是两个命令合成了一个:git fetch 和 git merge。当我们从来源拉取修改时,我们首先是像 git fetch 那样取回所有数据,然后最新的修改会自动合并到本地分支中。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

很好,我们现在与远程分支完美同步了,并且也有了所有最新的修改!

Reflog

每个人都会犯错,但犯错其实没啥!有时候你可能感觉你把 git repo 完全搞坏了,让你想完全删了了事。

git reflog 是一个非常有用的命令,可以展示已经执行过的所有动作的日志。包括合并、重置、还原,基本上包含你对你的分支所做的任何修改。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

如果你犯了错,你可以根据 reflog 提供的信息通过重置 HEAD 来轻松地重做!

假设我们实际上并不需要合并原有分支。当我们执行 git reflog 命令时,我们可以看到这个 repo 的状态在合并前位于 HEAD@{1}。那我们就执行一次 git reset,将 HEAD 重新指向在 HEAD@{1} 的位置。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

我们可以看到最新的动作已被推送给 reflog。

原文链接:https://dev.to/lydiahallie/cs-visualized-useful-git-commands-37p1

如果这篇文章对你有帮助,请给我一个免费的“赞”和“在看”,感谢感谢!学习过程中如果遇到问题可以加我微信进行咨询

我在这里和你分享技术·职场·副业·搞钱
加我微信(备注:py)送你一份Python学习资料大礼包

一目了然,小姐姐用动图展示 10 大 Git 命令,python

本文转自 https://mp.weixin.qq.com/s/-NmQc_KJLhjoLq8TIOG9MQ,如有侵权,请联系删除。对于从来没有接触过编程的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

👉Python学习大纲👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

点击下方安全链接前往获取

CSDN大礼包:《Python入门&进阶学习资源包》免费分享文章来源地址https://www.toymoban.com/news/detail-805404.html

👉Python实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

一目了然,小姐姐用动图展示 10 大 Git 命令,python

👉Python书籍和视频合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

一目了然,小姐姐用动图展示 10 大 Git 命令,python

👉Python副业创收路线👈

一目了然,小姐姐用动图展示 10 大 Git 命令,python

这些资料都是非常不错的,朋友们如果有需要《Python学习路线&学习资料》,点击下方安全链接前往获取

CSDN大礼包:《Python入门&进阶学习资源包》免费分享

到了这里,关于一目了然,小姐姐用动图展示 10 大 Git 命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3的Props与Emit一目了然,直观使用

    父页面 子页面 父页面 子页面 有问题欢迎大家指教,谢谢~

    2024年02月09日
    浏览(29)
  • 将多个DIV放在一行显示的三种方法(超简洁,一目了然)

    1.先设置一个DIV,里面套4个子div,并设置样式,width用像素或者%百分比表示时: 2.width用vh表示时,父div中要加上position: fixed;: 可以注意到子div无需加display: inline-block; 也可以实现。 – 当width为40vh时,此时一行可装下: 当width为50vh时,此时一行装不下,自动换行: **注意:

    2024年02月16日
    浏览(40)
  • 如何创建一个uniapp项目,如何运行手机上,打包等,更换头部,底部图标等。一目了然,

    1.下载一个Hbuilderx https://www.dcloud.io/hbuilderx.html ,根据自己电脑64位 32位安装就好,很简单 2.选择文件→新建→项目  3.选择uniapp的一个快捷带+号的项目。底部导航图标换自己需要的即可 4页面配置的主要四大地方,目前只需了解就行            manifest.json里有些操作需

    2024年02月09日
    浏览(29)
  • 用动图详细讲解——栈

    栈的概念: 栈: 一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作,是操作受到限制的线性表,遵行后进先出LIFO(Last In First Out)的原则。 简单理解就是一个 一端封口,另一端没有封口 的管子,你往里面放直径与管子的直径相同的球,不管你放多少球,

    2024年02月02日
    浏览(26)
  • 运用pyecharts制作可视化大屏(代码展示及效果图-动图)

    一、Matplotlib绘图 折线图 import matplotlib.pyplot as plt # 调用画图库 plt.rcParams[\\\'font.sans-serif\\\'] = [\\\'SimHei\\\'] # 设置成可以显示中文,字体为黑体 plt.figure( figsize =(12,8)) # 调整图片尺寸 x = [\\\'周一\\\',\\\'周二\\\',\\\'周三\\\',\\\'周四\\\',\\\'周五\\\',\\\'周六\\\',\\\'周日\\\'] # 设置x轴数据 y = [401,632,453,894,775,646,1207] # 设置对应

    2024年02月05日
    浏览(41)
  • 【五一创作】数据可视化之美 ( 三 ) - 动图展示 ( Python & Matlab )

    在我们 科研学习 、 工作生产 中,将数据完美展现出来尤为重要。 数据可视化是以数据为视角,探索世界。我们真正想要的是 — 数据视觉,以数据为工具,以可视化为手段,目的是描述真实,探索世界。 数据可视化是将数据转化为易于理解和解释的图形形式的过程。它是

    2024年02月01日
    浏览(36)
  • 03-stable diffusion国风小姐姐

    下载网站civitai: Civitai | Stable Diffusion models, embeddings, LoRAs and more 国风主模型:https://civitai.com/models/14171/cutegirlmix4 主模型放到sd-webui-aki-v4modelsStable-diffusion文件夹下。 百度网盘: ​ 链接:https://pan.baidu.com/s/1xBU4MMm9RZ9mCwSoIDlO_g ​ 提取码:9sql 例子1 效果: 例子2 效果: 例子3

    2024年02月08日
    浏览(24)
  • 利用百度AI作画之二次元小姐姐

    先说结果:不好说😶 大白   不敢细看,过于骇人  首先还是先去申请,基础版即可 AI作画_文心AI作画-百度AI开放平台 百度AI开放平台-文心AI作画,基于百度领先的中文跨模态生成模型,准确理解用户输入的自然语言,一键自动生成不限定风格的图像. https://ai.baidu.com/tech/creativi

    2024年02月12日
    浏览(37)
  • Unity+百度文心大模型驱动AI小姐姐数字人

            最近看到新闻,说是百度、字节、商汤、百川、智普等几家企业及机构所发布的生成式大语言模型,通过了《生成式人工智能服务管理暂行办法》,成为首批获得官方备案的大语言模型服务提供商。虽然一直在使用包括文心一言、chatglm这些大语言模型的,但这次好像

    2024年02月07日
    浏览(35)
  • AI绘画第三步,用Lora创造逼·真的小姐姐!

    无论虚拟世界多么繁荣,真实的东西,都有让人不可抗拒的魅力,AI绘画也是如此。今天就来讲讲如何使用ChilloutMix和Lora画出特别“逼·真”的小姐姐,在虚拟中追求真实,这其实也是我们这个系列的核心目标。 从本质来说,它就是众多的StableDiffusion模型(checkpoints)中的一个

    2024年02月02日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包