Git与GitHub使用教程

本文最后更新于:2022年7月21日 下午

Git与GitHub使用教程

这篇文章是我的学习笔记,借鉴了各种博主的资料和自己的理解整理而成。

本文从0开始完整介绍Git和GitHub,所以比较长,请灵活运用大纲和搜索功能。

Git

Git是什么?

参考

Git是目前世界上最先进的分布式版本控制系统

版本控制的目录叫做一个仓库(repository)

你的本地仓库由 Git 维护的三棵“树”组成。第一个是你的 工作目录,它持有实际文件;第二个是 暂存区(Index),它像个缓存区域,临时保存你的改动;最后是 HEAD,它指向你最后一次提交的结果。

使用Git的工作流程如下:

在本地修改、保存之后,通过 推送(Push) 操作来提交到远程仓库。

与其他版本控制系统一样,Git还提供 分支(branch) 功能,该功能允许你从开发仓库的主线上分离出一个版本,然后在不影响主线的情况下继续工作。

版本控制系统:

小明正在写一篇文章,他想删除一个段落,过了一会后,他突然发现他想要回这个段落,于是他苦逼地再打了一遍。

小红正在写一篇文章,她想删除一个段落,但是她不确定之后是否想恢复这个段落,所以她拷贝了一份,过了一会儿,她又想更改一个段落,也不确定之后是否会想恢复,于是她又拷贝了一份,他的文件夹里出现了很多类似xxxxx-副本(2)的文件,她苦逼地寻找他想要恢复的那个版本。

张三正在写一篇文章,他使用了Git来管理版本,Git详细记录了每次更改的日期和更改处以及张三自己为改动写的备注。他很开心地写了一篇神作。后面李四想与张三合作这篇文章,李四也使用Git,Git还记录了每次更改的用户。他们很开心地合作了一篇神作。

分布式:

参考资料

下图是集中式系统,中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。

下图是分布式系统,首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

使用Git

使用之前

Git是一个跨平台的开源软件。官网没有被墙而且速度很快,直接下载安装即可。

Linux系统可以使用sudo apt-get install git安装

下载安装后,打开终端或Git Bash,我们接下来要配置Git。

配置要设置你的身份,身份由用户名和邮箱组成,通过一下命令设置:

1
2
$ git config --global user.name "你的名字"
$ git config --global user.email "你的邮箱"

命令介绍

最常用的命令是push commit pull clone

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
git init  # 初始化一个仓库,在此命令之前要从终端进入你想记录更改的那个工作目标里

git clone <repo> # 克隆一个仓库 repo是仓库地址
git clone <repo> <path> # 克隆一个仓库 path是本地保存路径
git clone https://github.com/sample/hello.git # 克隆github上一个仓库的写法

git add <文件名> # 添加某个文件到仓库缓存区
git add * # 添加所有文件

git commit -m "代码提交备注信息" # 提交你的代码附带一段备注,你的改动只提交到了HEAD而不是远程仓库。

git push origin <分支名字> # 将本地HEAD提交到远程仓库,这个操作叫做push
git push origin master # 每个仓库有一条主线分支叫做master

git remote add origin <server> # 假如你不是通过clone来创建仓库的,那么你需要用这个命令来连接到某个远程服务器

git log # 查看修改的日志

git checkout -b <分支名字> # 创建一个分支并切换过去,分支也要push才能在远程仓库中被看见
git checkout <分支名字> # 切换分支
git branch -d <分支名字> # 删除分支

git pull # 更新你的本地仓库,这个操作叫做pull
git merge <分支名字> # 将其他分支合并到你的分支

git checkout -- <文件名> # 将尚未commit的内容放弃退回到上一个版本
git reset --hard HEAD^ # 退回到上一个版本 HEAD^^为上上个版本 HEAD~n 为上n个版本
git reset --hard <commit id> # 每一次commit有一个单独的ID,通过此命令到相应版本
# 这两个命令让你放弃所有尚未push的内容,并获取远程仓库上最新的版本
git fetch origin
git reset --hard origin/master

更多操作

GitHub

GitHub是一个面向开源及私有软件项目的托管平台。也就是远程仓库存放的地方。18年被微软收购,目前微软、谷歌以及很多开源项目的代码都托管在改平台。GitHub是最好的代码托管平台。

界面大概长这样23333

个人界面

使用之前

你得先注册一个GitHub账号。官网

然后你要创建一个SSH Key,这个秘钥用来保证没有别人来瞎改你的仓库,是你的凭证。

打开终端(git bash)输入下面代码

1
ssh-keygen -t rsa -C "你的邮箱"

然后在你的用户主目录(Windows下是C:\users\你的用户名)下找到.ssh目录。

里面有id_rsaid_rsa.pub两个文件,公钥是.pub,打开它,复制里面的内容。

打开Github的Account settings,在SSH keys里面粘贴。然后添加Key。

创建远程仓库(repo)

在你的用户界面下的Repositories点new。

Repository name是你仓库的名字。之后是对仓库的描述以及可见性,现在Github上私有库已经免费了,所以这两个随便选。其他暂时默认,点击创建。

然后你就有了一个远程仓库!

此时网页会写的很清楚这个仓库的地址,之后你就可以用命令行来git了!

客户端

GitHub有客户端,搜索下载就行了,然后登陆,这样你就不用手动输入命令了。

README.md

别人从网页打开你的仓库会有一个初始化文档,让别人知道你这个仓库是用来干什么的,要如何使用你的代码。这些通常用markdown格式书写,并且命名为README.md放在根目录。这个文件会在网站上自动显示。github官方教程

GitHub支持拓展语法:

emoji:blush::blush:

所有emoji代码

@用户@username可以@别的用户

badge:项目徽章。教程 Shield.io

标准写法Standard Readme

issues

教程

GitHub为开发者提供了许多便于开发的功能,其中,issues功能被用来追踪各种想法,增强功能,任务,bug等。

项目维护者可以通过Issues来组织需要完成的任务,例如增加新特性或者审计一个已经上线的功能。同时,还可以将Issues关联某些pull request,一旦合并了某个pull request,这个issue会被自动关闭。同时,你可以将issues添加到看板,也可以将看板的任务转化为issue。

commit log

feat: 新功能

change:需求变更

fix:缺陷修复

test:修改测试代码

docs:文档变更

style:代码格式调整

refactor:代码重构