Github新手指南 (笔记)

420 阅读8分钟

Git和Github分别是什么

Git是一个运行在你电脑上的版本控制软件,而Github是基于Git这个版本控制软件打造的网站

Git的三个概念:提交commit仓库repository分支branch

什么是版本控制软件

拿word或者ppt以及像掘金这样的文本编辑器来说,你一定用过他的撤回功能。
有时候你可能不小心删除了一些内容,或者新添了一些你不要的内容,你可以按Ctrl + Z去撤回,这就是个救命的功能。在我们编写文档的时候呢,我们可以无限后悔。

那写代码的时候,可能你后悔的几率更大,写着写着就后悔了,我为啥要这么写。所以编写代码的时候,更加需要一个可以让你无限后悔的这样的一个软件记录下来,记录你这些代码从a到b到c这各个阶段的变更情况,这个历史记录我们要保存起来。防止你将来想后悔的时候没办法往前倒。

所以Git的核心功能就是把你代码的变化,以你的提交(commit)为单位记录下来
这样当你代码写崩的时候,你就可以找到以前的某一次提交,把这一次的提交给回滚掉。

仓库repository

那仓库是什么呢,这是一个比较好理解的概念,因为大家用代码编写程序的时候,都会有一个代码库嘛
代码库一般就是一个文件夹,当你在这个代码项目里,这个文件夹的根目录里初始化这个git,这个文件夹就成为了一个仓库,这个仓库对应的文件夹里代码的变更就会被git给控制记录下来,那你的每一次提交也是针对这个仓库进行的。

分支branch

分支就是根据不同的人不同的需求,我们在当前的代码中开辟不同的分支。大家各写各的,互不影响 ,最后再合起来,合成一个成品,这不就是分工协作嘛。
就比如编写文档,上面一段归a写,下面一段归b写,最后一合并就成了一个完整的文档是吧。

Github是什么

了解了git的概念,那么gitHub也就容易理解了。

我们第二个概念讲git的这个仓库,一般是你在本地的这个项目初始化的,那如果只是在本地,那你不就只能自己玩自己的吗。

那多个项目的开发者就不能与你协作了,难道每个人都去你的电脑上搞吗。

所以github就可以让你把这个仓库存在这个网站上,大家都从这个网站上去取代码,然后写好的代码都往上存,分支什么的也都保存在这个网站上,提交也保存在这个网站上。就可以取共享别人的代码,项目主人允许的情况下还能改他的代码。

这样就实现了合作,参与一个软件项目,甚至跨国的软件项目。


安装

那知道了git和gitHub分别是什么,其中我们得到的一个区分是git是一个版本控制软件,而github是一个基于这个版本控制软件托管上面这个仓库的一个网站。所以既然git是个软件,那我们就需要把它安装起来

我这里是window系统,可以在这个网站下载
gitforwindows.org/

安装完勾选Launch Git Bash然后就会打开如下命令行

image.png

这个命令行是我们使用git的一个手段


在安装好这个必备的git软件之后,我们就可以上github上面逛一逛了

下面就是一个常见的,典型的一个GitHub的界面,我拿这个比较火的Vue3+TypeScript的后台管理系统来举例

image.png

那如果你只是想copy代码呢,看下面步骤

image.png

随后进入一个想要保存这个项目的文件夹,比如xxx文件夹
然后在这个xxx文件夹中 右键 git bash here
然后就会在当前目录下唤醒刚才我们看到的git bash
然后输入一窜命令 git clone xxxxx.git
然后就变成你电脑里的文件。

然后刚刚还可以直接Download ZIP
这两者的区别是,你通过前者下载下来的是一个仓库,后者就只是一个普通的文件。没记错的话。

怎么找开源项目

https:github.com/trending/

特殊的查找资源技巧

常用前缀后缀

  • 找百科大全 awesome xxxx
  • 找例子 xxx example
  • 找空项目架子 xxx starter / xxxx boilerplate
  • 找教程 xxx tutorial

仓库和普通文件夹

刚刚说过下载别人代码有两种方式
一种就是通过在Github上托管的地址,利用git命令去远程拉取
另外一种就是直接Download ZIP

通过git命令远程拉取到的文件中,隐藏的文件里有一个.git文件。
通过Download ZIP 下载的文件,隐藏的文件中没用这个.git文件。

前者通过git clone下来的是 “仓库”
后者直接下载得到是一个 “文件夹”

而文件夹是需要通过git初始化后才能变成仓库的。
在普通的文件夹中,右键 Git Bash Here
输入 git init 这样一个普通的文件夹就变成git的一个仓库了。

第一次提交

image.png
根据git的一个设计,他并不是直接从工作区到仓库

而是先从工作区,你可以通过 git add < file > 提交指定文件到暂存区,或者git add -A 一次性提交所有文件到暂存区,然后再通过git commit提交到仓库

这样的一个好处是,你可以选择把哪些文件添加到暂存区。

下面这个例子是提交所有文件

image.png
然后刚刚在工作区的文件全部跑到暂存区了

image.png

这时候再通过git commit -m "提交的信息"(提交的信息就是每次提交起个名,描述一下你提交的是什么) 就能把暂存区的文件提交到仓库

像我们第一次提交没有什么目的,就可以叫 "first commit"
git commit -m "first commit"
然后根据git的提示操作之后再提交就可以了。

image.png
然后左边啥都没了,因为这些代码文件已经被成功的提交到仓库了!

那个up主说其实也不用使用这些命令。回到刚刚初始化好的带有.git的文件里,通过code打开(VSCode)

image.png
点击 + 号就能添加到暂存区,点击更改右边的加号就能把全部文件添加到暂存区

然后刚刚是通过git commit -m "XXX" 去提交到仓库,现在可以

image.png
输入"提交的信息"之后,Ctrl + 回车,就能提交到仓库了。

查看提交的历史

git log --stat

控制台就会输出

image.png
每一个commit具有一个唯一的哈希值。
然后Author是B站up主fengyu<邮箱>
再往下就是 "提交的信息" 即 "first commit"

然后Up主又说实际上不会用这个指令,在VsCode右边

image.png
有这么一个东西,这就是你刚刚的提交

维护项目的日常

从工作区打回去 git checkout < filename >
提交后撤回 git reset HEAD^

或者通过

image.png
通过这种方式回滚(从工作区打回去)

提交撤回也可以通过图形化操作

image.png

image.png

image.png
就能达到直接输入指令git reset HEAD^的效果

分支

image.png

Git与Github远程仓库 !

同一台电脑新建多个分支模拟多人合作的场景,实际上所有的同事并不可能去共用一台电脑
团队合作往往是通过Github公司搭建的git服务进行的。

以Github为例,我们要怎么把我们建立好的这个仓库传到上面和别人进行合作呢
首先需要我们在Github上新建一个仓库

image.png

然后输入仓库的名字

image.png

创建好之后,我们在Github远端就有一个空白的仓库,我们只需要把我们本地创建好的仓库给提交上去就可以
在Github上新建一个仓库之后呢,会有这样的提示

image.png

这里Up主选择了第二个,即把已有仓库提交上去
依次在集成终端输入上面三句代码
第一句的意思是:把 “你在Github创建的仓库名字” 当作一个远端的仓库添加到了本地的git中
第二句就是把主分支改名成main
第三句 git push -u origin main 推送到Github上面

推送当前分支最新的提交到远程
git push

拉取远程分支最新的提交到本地
git pull

这样就能实现不同电脑的多人协作

注意点: 在你push到GitHub之前,git会做一个比较,就是你现在的提交水平是否领先于Github上那个,是的话才给你push。 或者远程已经更新了,你本地没有,然后又做了其他更新,这时候他会让你先pull然后再push