我是怎么自学 Git / GitHub 的?

大家好我是鱼皮,Git 和 GitHub 是如今团队协作开发必不可少的技能,且不说程序员,就连很多产品也在学习它们。今天分享一下我自学 Git 和 GitHub 的经验,希望起到一个 导学 的作用,帮助大家抓住重点,节省时间、更高效地自学。

本文大纲:

  • Git(GitHub)是什么?有什么用?

  • 为什么要学?

  • 什么时候学?

  • 要学什么知识?哪些是重点?

  • 怎么学?有哪些方法和资源?

  • 以及面试的时候可能会考什么?

Git / GitHub 是什么?有什么用?

Git 是目前 最主流的 分布式版本控制系统 ,版本控制系统可以帮你保存文件的所有修改记录、并使用 版本号 进行区分。你可以随时浏览历史版本、将改错的文件还原到指定的版本,还可以对比不同版本的文件差异、防止旧版本覆盖新版本等。起到恢复和保护作用。而 分布式 是指每位开发者都能在本地维护自己的代码和修改记录,并且还能和其他人的记录进行同步。

GtiHub 是主流的 代码托管平台 ,可以理解为一个存放和管理代码的 “网盘”,大家可以把自己的代码传上去进行共享和维护,也可以从平台下载代码。

7ad6296816460ff407a195a2bf1f2d76.png

注意不要把二者搞混!

Git 是工具(是抓手),而 GitHub 是平台。两者没有必然的联系,我们也可以用其他工具来向 GitHub 提交代码,也可以用 Git 向其他平台提交代码。

为什么要用 Git / GitHub?

Git 从最开始就是 Linux 之父为了更好地管理 Linux 内核开发而创立的。

试想一下,假如有 100 个人一起来开发大型项目,怎么才能保证大家的代码不重复,又能共享呢?难道把代码放到 U 盘里拷来拷去,或者口口相传说:我今天要改这个文件,其他人都别动?

肯定不行!

所以分布式版本控制系统和代码托管平台出现了。大家可以把项目代码放到代码托管平台上,每个人都从上面下载代码,然后在自己的电脑改代码、维护自己的版本,最后在发布前,把大家不同版本的代码合到一起,再上传到平台就可以了,非常方便高效。

公司为了安全,一般都会有自己的代码托管平台。而 GitHub 呢,是 开源的 ,相当于世界上所有人都是同一家公司的员工,大家都能共享这上面的代码、免费学习和参与知名项目。

6319d9c23b9224c271e3b15bda57ffdc.png

为什么要学它?

它们就是为协作开发而生的。因此,大多数公司都在用它们来管理项目。所以只要我们想找工作,就不得不学。

我之前看到一些段子说:程序员入职新公司第一天,不会 git 被开除了。也能反映出来 Git 真的很重要!

什么时候学?

记住两个时间点就够了:

  1. 学过至少一门编程语言后

  2. 准备开发个人项目前

这样你就可以把之后做的所有项目都放到 Github 去管理,维护自己的项目仓库。

Git / GitHub 学习重点和方法

我把 Git 的学习分为四个阶段:

一、Git 基础

本阶段目标

  1. 了解 Git 基本概念和常用命令的作用(理论)

  2. 能够使用 Git 命令来管理和提交项目代码,要走一遍完整的流程(实践)

学习方法

推荐《猴子都能懂的 Git 入门教程》。它是免费的,图文并茂、通俗易懂,花 1 小时看完 入门篇 就足够了。

1cf9c4cbd01166f1c60671f2706e270e.png

在学习时,大家一定要跟着教程多敲命令 ,要自己走完从新建文件到提交文件的完整流程。以实际操作为主,而不要去背那些命令。因为其实我们是可以用开发工具或者软件来可视化地操作 Git 的、而且哪怕忘了命令也可以查,所以死记硬背没有意义。

分支是 Git 里很重要的概念,大家可以使用 Learning Git Branching 这个在线游戏来学习和理解分支。

猴子都能懂的 Git 入门教程:https://backlog.com/git-tutorial/cn/

Learning Git Branching:https://learngitbranching.js.org/?locale=zh_CN

二、GitHub 基础

首次接触 GitHub 时,你就把它当成一个资源网站,在搜索框里输入你想搜的东西就可以了,不需要任何的教程。

但是如果我们想上传代码到 GitHub、和他人协作,就得好好学习一下了。

目标

  1. 熟悉 GitHub 基本操作,并能够使用它来管理代码

  2. 了解如何利用 GitHub 搜索和下载项目代码

  3. 最重要的。了解 GitHub 协作流程;了解开源,并能向开源项目提交代码

知识点

  • ⭐️ 基本概念

    • 什么是 Git(版本控制系统)

    • 什么是 GitHub(代码托管平台)

    • Git 和 GitHub 的作用

    • Git 和 GitHub 的联系与区别

  • ⭐️ Git 概念

    • 工作区

    • 暂存区(索引)

    • 本地版本库

    • 远程仓库

    • Git 文件状态

    • 版本

    • HEAD

    • 分支

  • Git 的安装

  • Git 常见配置(git config)

    • 个人信息

    • 修改配置

    • 查看配置

  • ⭐️ Git 基本操作(开发流程)

    • 初始化仓库(git init)

    • 克隆(git clone)

    • 暂存(git add)

    • 提交(git commit)

    • 推送(git push)

    • 拉取(git fetch)

    • 拉取合并(git pull)

    • 😐 查看状态(git status)

    • 😐 查看历史(git log)

  • ⭐️ 分支操作

    • 创建分支

    • 查看分支

    • 切换分支

    • 删除分支

    • 合并分支(git merge)

知识点

  • 什么是 GitHub?

  • ⭐️ 如何访问 GitHub?

  • ⭐️ 基本概念

    • 主分支

    • 仓库

    • 分支

    • README

    • Star

    • Follow

    • 账户类型(个人 / 组织)

  • 必备操作

    • 公开

    • 私有

    • ⭐️ 搜索仓库 / 代码

    • 创建仓库

    • Fork 仓库

    • Watch 仓库

    • ⭐️ 上传本地代码

    • 修改个人信息

  • ⭐️ GitHub Flow 协作流程

    • 克隆 / Fork 仓库

    • 创建分支

    • 修改代码

    • 发起 Pull Request

    • Code Review

    • Merge 分支

    • 删除分支

  • ⭐️ 了解 GitHub Issues

  • ⭐️ 贡献代码流程

学习方法

我认为学 GitHub 最大的难点在哪呢???

难点就是你得先能访问 GitHub!这个我就不多说了,大家自己找方法。

刚开始直接跟着官方的 Hello World 入门教程来实操一遍提交代码的流程就算入门了,估计用不了 20 分钟。

cacac9c1ec30b8aba68bffafc4c48de6.png

之后有空的话我建议大家阅读下 《GitHub 漫游指南》 ,这是一位大佬总结的经验技巧,能够加深你对 GitHub 的认识。

还可以阅读《开源指北》电子书来了解开源,打开新世界的大门。

Hello World 入门教程:https://docs.github.com/cn/get-started/quickstart/hello-world

《GitHub 漫游指南》:https://github.phodal.com/

开源指北:https://oschina.gitee.io/opensource-guide/

三、Git 进阶

企业开发中,项目可能很大、协作人员很多,就容易出现代码冲突。比如你把我写的代码覆盖了,或者搞丢了一部分。

为了更好地预防和解决这些问题,成为项目管理大师呢,建议大家还是了解下 Git 进阶知识。

有同学说 Git 简单,如果只是能用它来工作的话的确不难。但是 Git 里面是有很多高级用法的,活用和会用有很大的区别。

目标

  1. 学习 Git 高级操作,尤其是能够熟练地规避和解决冲突。

  2. 了解企业常用的 Git 协作流程、规范、项目管理方法,能独立管理项目。

知识点

  • 高级操作

    • 标签(git tag)

    • 检出(git checkout)

    • ⭐️ 贮藏(git stash)

    • 清理(git clean)

    • 变基(git rebase)

    • 重置(git reset)

    • 还原(git revert)

    • 😐 检索(git grep)

    • 😐 展示差异(git diff)

    • 😐 溯源(git blame)

    • 😐 参考日志(git reflog)

    • 😐 交互式命令行(-i 参数)

  • ⭐️ 预防冲突

  • ⭐️ 解决冲突(重中之重)

  • ⭐️ 配置 SSH

  • 子模块

  • Git 钩子

    • 提交钩子(pre-commit)

  • ⭐️ 忽略提交(Gitignore)

  • ⭐️ cherry-pick

  • 分布式工作流程

  • Git worktree

  • Git Flow

  • 😐 Git 内部原理

  • Monorepo

  • 了解其他版本控制系统,和 Git 对比

学习方法

怎么学呢?我建议大家直接看 Git 的官方文档,不能再详细了,跟着文档敲一遍命令,有个印象就够了。

四、GitHub 进阶

如今 GitHub 的能力已经非常强了,除了代码的管理和检索外,它还集成了各种辅助团队开发和运营的功能,建议大家按需了解。

81b3ab13ddedca71e45b7a8d4e93e182.png
GitHub 更多功能

目标

  1. 学习更多 GitHub 功能,从而提升研发效率、更好地管理项目

  2. 尝试用心维护和推广自己的 GitHub 项目

知识点

  • 开发

    • ⭐️ 配置 SSH 拉取

    • 😐 GitHub 快捷键

    • 😐 GitHub 命令面板

    • 😐 GitHub Apps

    • 代码安全

  • 协作

    • ⭐️ GitHub Codespaces

    • GitHub Discussions

    • Pull Requests

  • 项目管理

    • Organizations 组织

    • GitHub Issues 问题反馈

    • 😐 GitHub Projects 项目管理

    • Insights 数据分析

    • 贡献者管理

    • 开源协议

  • DevOps

    • ⭐️ GitHub Pages 网站托管

    • Gitpod 代码托管

    • GitHub Actions

    • 😐 GitHub Packages

    • GitHub Webhook

  • 😐 Git 私服搭建

    • GitLab

    • Gogs

学习方法

和上一个阶段一样,进阶的最好方式就是 阅读官方文档 !GitHub 的文档又新又全、还有中文版、还好懂,简直就是完美的教程,这年头,你想找个国外的、能让人看得懂的文档,真心不容易。

此外,建议多看一些别人分享的 GitHub 技巧,比如我之前分享过的几个隐藏的 GitHub 小操作,在仓库页面按一个 键,就能更方便地阅读代码了,还是很实用的。

总之想学好 Git 就要多敲多实践,多用它来管理项目,试着跟别人一起协作开发,慢慢地就熟练了。

面试考点

Git 在面试中的占比一般是很低的,至少我秋招 20 多轮面试中 1 次都没被问到过,所以大家不用刻意去准备。

不过有时间的话可以了解一下常见的面试题,比如下面这些:

88785471b26eb1399d846cc6b41bb00b.png
Git 面试题


以上就是本期分享了,这份学习路线的详情和资源放到了 我的编程知识星球(点击了解详情),欢迎加入一起学习编程。可以向鱼皮和大厂同学 1 对 1 提问、帮你制定学习计划不迷茫、跟着鱼皮直播做项目(往期项目可无限回看)、领取鱼皮原创编程学习 / 求职资料等。最近秋招开始了,星球内也在帮大家规划求职进度、完善简历和项目亮点。

850440fb25c5bb79d10b8c522e2f7238.jpeg

往期推荐

盘点 Vue.js 那些有趣的版本名称!

计算机专业,下一个土木?

转行大数据 1 个月,我麻了。。。

这个17k star 的拖拽库有点料~

编程导航,火了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ArcGIS微课1000例】0004:值提取至点(Extract value to point)

文章目录 问题描述值提取至点工具介绍案例实现过程注意事项问题描述 研究区分布有成千上万个离散的矢量点(根据范围创建随机点),但是点上没有高程值,研究区DEM是有的,那么怎样在ArcGIS中提取每个点对应的高程值? 离散点分布情况: DEM数据(ArcGlobe中三维显示):

C语言试题159之计算字符串中子串出现的次数

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:两个字符串连接程序 2 、温馨…

关于Android studio找不到sqlite数据库的解决方法

打开Android Device Monitor,剩下的与Eclipse相同。转载于:https://blog.51cto.com/10237758/1761397

linux ubuntu deepin apache2 rewrite

2019独角兽企业重金招聘Python工程师标准>>> apache php 环境装好了,下载了TP5的项目,然后部署上去之后,端口81,,但是 访问 127.0.0.1:81 正常 127.0.0.1:81/admin,报错 404 Not Found 原因是,…

[转]Android-Proguard(代码混淆)

一:混淆是什么,该怎么做? 如果我们的app正常发布就必须要经历混淆这一步,混淆可以使我们的app不那么容易被别人用反编译工具破解,就算被破解,想要读懂我们的源码也是非常费劲的,因为混淆过的源码…

学妹,你要的C语言版AOE网络数据结构来了,就这么简单!

文章目录AOE关键路径编程AOE完整求解程序AOE关键路径编程 不难发现AOE图最大特点是没有回路,并且有向图方向始终是从源点走向汇点,且源点汇点都是一个。 把图1写成邻接矩阵文件,见文件P200G736.TXT,并在此复制G0.C到AOE.C&#x…

C语言试题160之某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下: 每位数字都加上 5,然后用和除以 10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:某个公司采用公用电话传递数…

C# 关于状态机的实现(案例版)

大部分的状态机都是有限状态机,某些业务环境,或者其他环境中,如果有状态机其实还是很方便的。比如,我是用在了单个客户的Socket通信上,未连接状态,我就等连接。已连接状态,就等待下一步指令状态…

[转]Android 项目的代码混淆,Android proguard 使用说明

简介 Java代码是非常容易反编译的。为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理。 ProGuard是一个混淆代码的开源项目。它的主要作用就是混淆,当然它还能对字节码进行缩减体积、优化等,但那些对于我们来说都算是次要…

数据结构与算法:终于可以用三种语言(C,C#,JavaScript)把图的广度优先遍历讲清楚了(推荐收藏)

文章目录邻接矩阵存储图的广度优先遍历过程分析C语言实现队列编程程序中加入图的处理函数结果的再次分析C#语言实现图的广度优先遍历、并显示广度优先遍历生成树JavaScript语言实现图的广度优先遍历、并显示广度优先遍历生成树邻接矩阵存储图的广度优先遍历过程分析 对图1这样…

C语言试题161之求100000以内的自守数

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:自守数是…

改造.NET遗留应用

浅议.NET遗留应用改造TLDR:本文介绍了遗留应用改造中的一些常见问题,并对改造所能开展的目标、原则、策略进行了概述。一、背景概述1、概述或许仅“遗留应用”这个标题就比较吸睛,因为我听过太多人吐槽了。Robert Martin在《修改代码的艺术》…

GitHub的DGit改进了平台的可靠性、性能以及可用性

GitHub最近悄悄地发布了DGit,全称为“分布式Git”。这是一种基于Git创建的分布式存储系统,其目标是改进使用GitHub时的可靠性、可用性以及性能。\\DGit是一个应用层面的协议,它利用了Git分布式的特性,将每个仓库在三台不同的、独立…

用静态NAT实现外网PC访问内网服务器

在我们的生产环境中常常处于安全考虑将服务器置于内网环境中,但同时得向外网提供各种服务功能,此时就需要用到NAT技术。下面是我用思科的仿真软件搭建的一个实验环境,实现外网PC访问内网服务器。先说明一下实验环境:路由器R0左边为…

[转]分布式事务之TCC服务设计和实现注意事项

1、TCC简介 TCC是一种比较成熟的分布式事务解决方案,可用于解决跨库操作的数据一致性问题; TCC是服务化的两阶段编程模型,其Try、Confirm、Cancel 3个方法均由业务编码实现; 其中Try操作作为一阶段,负责资源的检查和…

量化投资策略的评估标准及其计算公式

收益率指标:分为策略的总收益率和策略的年化收益率 策略的总收益率: 策略的总收益率是评价一个策略盈利能力的最基本的指标,其计算方法为: 公式中Vt表示策略最终的股票和现金的总价值,V0表示策略最初的股票和现金的总…

【ArcGIS微课1000例】0005:空间连接(Spatial Join)

问题描述 现在要根据范围,怎样批量统计各个范围内的湖泊的总面积、各个省份内的铁路或河流总长度、各个地区的人口综合等。 空间连接 根据空间关系将一个要素类的属性连接到另一个要素类的属性。目标要素和来自连接要素的被连接属性写入到输出要素类。 用法 空间连接是指根…

【微服务专题之】.Net6中集成消息队列-RabbitMQ中直接路由模式

微信公众号:趣编程ACE关注可了解更多的.NET日常实战开发技巧,如需源码 请公众号后台留言 源码;[如果觉得本公众号对您有帮助,欢迎关注]前文回顾【微服务专题之】.Net6下集成消息队列上-RabbitMQ【微服务专题之】.Net6下集成消息队列2-RabbitM…

C语言试题162之圆周率π

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款刷算法、笔试、面经、拿大公司offer神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:圆周率π…

第14、15教学周作业

要求一 还差一些没做完。 要求二 USTH_C程序设计&#xff08;基础&#xff09;14周第一次PTA作业 7-3 将数组中的数逆序存放 1.实验代码 #include<stdio.h>int main() {int i,n,t;scanf("%d",&n);int a[n];for(i0;i<n;i){scanf("%d",&t)…