白话Git与Github —— 入门笔记

如题,cd我想以菜鸟的视角来记录入门Git以及GitHub的过程。全篇就记录三件事:「啥是Git/GitHub」;「为啥要入门一波Git/GitHub」;「Git/GitHub的一些基本操作」


啥是Git/GitHub

「Git」是一个开源的分布式版本控制系统,用于高效地处理或小或大的项目(cd:就相当于一软件,可通过命令行来进行一些操作)。入门后如需详细学习 Git 可以看:Git 完整命令手册地址

「GitHub」是一个基于git的代码托管平台,付费用户可以建私人仓库,一般的免费用户只能使用公共仓库,也就是代码要公开。(就是类似于一个网盘,容量上限就几百兆,免费用户上传的东西都是公开的。)

「Git与GitHub的区分」前者是一个软件,即使在电脑不联网的情况下也能使用的一个脚本管理工具;后者是一网站,注册账号后可以通过git将自己电脑上的代码提交到自己账户下的GitHub仓库,这个仓库是公开的,别人能看到你的代码,这种开源的方式方便coder之间的交流学习。


为啥要入门一波Git/GitHub

对于一个写代码的人,经常会遇到一些问题:写了几个脚本,一段时间没用,就不知道放在电脑里的哪了;前天刚写完的一个脚本,昨天做了很大的改动给覆盖了,今天又发现昨天TM全写错了;在做一个项目中会写很多很多的脚本;自己技术不够,脚本写的不够好,希望有大佬能够改一改,或者升华升华…Git和GitHub就能很好地处理这些问题。

如前所述,Git是一个版本管理工具,其作用就是可以让Coder更好的管理自己写的程序和脚本,在一些情况下通过操作能复现原来覆盖的内容重现出来;当开始一个项目时,还能很好管理一下这个项目相关的所有脚本。而关于GitHub呢,我们将自己的代码上传到网上,因为是公开的,大家都能看,运气好的话还可以有大佬还能帮你升华一下代码。因为脚本和代码这些东西本身都不大,因此前面说的几百兆容量一般也都足够了。

如前述,如果手头并没有那么多脚本,也没有那么多的版本的程序,其实也不怎么需要这玩意儿了。不过对于GitHub而言,上面有大量的开源的优秀代码和项目(包括Google等大公司的开源代码),是值得学习的。


Git/GitHub的一些基本操作

正题之前,cd我将一个词儿解释一下。在Git中,所谓仓库(repository),在本地电脑上就可以理解为一个文件夹,这个文件夹里装着脚本等。对于GitHub上的“远端仓库”呢,cd我是理解为网盘。

首先要完成Git的安装配制,然后注册账号GitHub账号的注册,点击相应文字直奔对应教程。(请完成这两步再往下走)


GitHub配置ssh key

在实际使用中,我们会将本地的Git库和远程GitHub进行连接,这个ssh key就承担这安全担当。注册一个GitHub账户后我们就有了一个远程账户,但实际上我们可能有很多台电脑,我们可能在任意一个电脑上工作并连接同一个GitHub账户,那么每台电脑都应该配置一个ssh key,并且添加到远程账户中。这样,远程库和对应key的电脑进行通讯时就不会错乱同时也更安全。

配置ssh key教程(这个百度经验写的很简明,cd我就不copy过来了,这里重在明白ssh key的意义)。


Git的工作流程

Git这个工具在本地电脑里有如下图所示的三级系统(多称为“三棵树”)。第一个就是对应的工作目录(文件夹),你写的脚本都在这;然后用Git将你写的脚本添加到Index中,Index就帮你保存了你的一些改动;再然后,当你比较满意当前的代码之后,你再进行一个commit操作,Git就记住了你最后一次提交到Index的结果。

这三个部分,有实际文件的就第一部分,第二就是一个缓存区域来保存一些变动,第三个就是一个指针,指向最终版本。Git设立了这样的三级系统,就有助于我们查找和管理不同的更改以及相应版本。
白话Git与Github —— 入门笔记
图片来源:菜鸟教程 | Git简明教程


在本地电脑需要进行的基本操作为「建库」「添加文件」「提交当前版本」对应于上图的过程。然后将自己的东西推送到GitHub账户上「发布版本」。

建库」,新建一个工作目录,然后进入目录,输入:

git init

如果想要使用指定的目录,假设这个目录名字为“new_project”,作为Git仓库,然后输入:

git init new_project

如果想直接从网上现有 Git 仓库中拷贝项目。比如,要克隆 GitHub上一个很火的python联系库"show-me-the-code",可以用下面的命令:

git clone https://github.com/Yixiaohan/show-me-the-code.git

执行该命令后,会在当前目录下创建一个名为grit的目录,其中包含一个 .git 的目录,用于保存下载下来的所有版本记录。如果要自己定义要新建的项目目录名称,可以在上面的命令末尾指定新的名字:

git clone https://github.com/Yixiaohan/show-me-the-code.git my_girt

添加文件」,假设此时你已经在new_project这个文件夹中,并且当前目录下有一个名为“new_code.py”的脚本,我们想把它纳入项目中,方便以后的版本管理。输入:

git add new_code.py

这样一来我们就把当前版本的new_code.py提交到Index缓存中了。


提交当前版本」,如果继续将我们的文件向第三级提交,使用如下命令:

git commit -m new_code.py

发布版本」,(这个步骤需要已经完成ssh key的配置)首先需要将当前库与对应的远程库建立联系:

git remote add origin https://github.com/your_github_account_name/project_name.git

建立联系后,再将当前的版本推送到github的对应库中:

git push origin master

注意:如果远程库中有本地不存在的文件,那么需要先进行pull操作,然后再push。


Git的分支管理

这里将Git里的分支管理区分出来记录,因为它是一个必须的技能,在版本控制过程中十分重要。

创建分支命令、切换分支命令、合并命令和删除分支的命令依次如下:

git branch your_branchname
git checkout -b your_branchname
git merge
git branch -d your_branchname

示意图如下:
白话Git与Github —— 入门笔记
图片来源:菜鸟教程 | Git简明教程

如果你想把分支推送到远端,那么输入:

git branch origin your_branchname

关于分支操作的实例,请查看:Git分支管理


总结

前述简单介绍了,Git/GitHub的作用与区别,具体操作方面,记录了一下如何「建库」「添加文件」「提交当前版本」「发布版本」以及「分支管理」的简单命令。

还想废话一下,「在输入命令的时候大家务必注意一下当前所处哪个文件夹」,「还有push时候的可能先需pull」,「最好瞎建个库走个流程实操一遍」。

所有涉及到的资料与超链接整理如下:
Git 完整命令手册地址
Git 的安装配制
GitHub 账号的注册
Git 简明教程
配置 ssh key教程
Git 分支管理


「牢骚」:在这个互联网时代里,就学习而言,我们通常最不缺的就是资源了,但是面对越来越多的学习资料,我们更难以下手了。比如这里的git与github学习,网上大佬们通常尽可能给出的“全面完整”的知识点,这让cd我有种窒息感,而cd我最开始需要的仅仅是其中简简单单的几个操作。希望这篇只有几个简单操作的入门笔记对各位有所帮助。


(欢迎关注微信公众号,cd的实验报告:cdsreport)