Git和GitHub基础教学

发布于:2025-03-11 ⋅ 阅读:(15) ⋅ 点赞:(0)

1. 前言

当你写代码的时候一定遇到过自己需要对代码进行很多改动,结果改动完发现有很多报错,于是我们想回到之前的某个状态的代码的情况。如果是本地的一些项目我会对代码进行一个“存档”的操作(很多游戏会提供存档的选项从而保存玩家的进度,玩家可以“读档”从而恢复到该存档所保存的进度),我会将我的代码ctrl+a然后ctrl+c,打开我的记事本ctrl+v,完成了一遍存档,如果我需要保存新的我只需要再打开一个新的。如果我想要读取某个存档,我只需要将记事本的代码放到我的ide中。
这就是一个简单的代码存档管理,我们可以将我们的代码的一些“关键点”进行保存,然后当我们的代码出现一些问题的时候,我们可以读取这些“关键点”,返回到之前的进度重新进行改动。
但是这是我们一个人写我们自己的代码,万一是一群人在一起进行一个合作,我们该怎么做呢?我们使用u盘互相传一下我们的代码吗?这个方案当然是可以的,但很明显有问题,效率比较低,你的团队人越多,进行u盘同步进度的效率就会很慢。那我们就将各自的存档都上传到一个大家共享的网盘上吧。很快就会出现第一个问题:你们写的是一个python代码,这些网盘里的存档都叫import numpy…你自己只能在本地找到自己的代码,上面的很多存档你看着会一头雾水。还会有其他问题:这么多存档,到底哪个是正式的最后的代码?这里有的模块可能代码没有添加,或者有些需要添加进去的但是和其他代码有些冲突,一个代码和另一个代码到底有什么区别,这些都是可能出现的问题。
对于第一个问题,问题主要是没有统一的规则,万一代码出现问题我们可能都不知道这个代码是谁写的,谁上传的。所以最好这里存档能有时间和上传者的记录,甚至为了解决后面说的代码之间的改动,这个上传者最好自己稍微阐述一下我做了什么。
第二个问题,这里有很多代码,一般来说每个人会做一个模块,然后我们最后讲这些模块放到一起形成最后的代码,因此最后应该有一个人将这些模块的代码进行一个检查。检查没有问题就放进最后的代码之中,如果放进去后有问题也没有关系,因为之前的代码有存档。所有的代码都加进来之后,那我们的最后这个版本就确定了。
第三个问题,如果合作之中的代码之间有一些冲突,最好这些冲突能被标记出来。就像游戏里两个存档可能有不同的道具,有一种同步方案那便是两边的东西都保存,也可能是最后是保存某一种存档。
那这些功能都是可以被Git实现的,这篇文章就将以游戏存档的例子给大家介绍Git的使用。

2. 历史

Git的历史要从Linux之父Linus Torvalds说起。
Linus Torvalds作为Linux之父,当然生完孩子Linux后就不能放任不管了,所以在 2002 年之前,Linux内核的维护工作主要依靠Linus Torvald等人手工检查全球各地热心开发者们提交的补丁,审核通过后就会将其手动加到Linux代码之中,这种方式效率低下且容易出错。因此Linus Torvalds等人需要找到一个解决方案。
下图是Linux之父Linus Torvalds。
Linux之父
这个解决方案便是版本控制系统软件,也就是前文中我们说的那种解决方案。当时Linus Torvalds选择了BitKeeper来解决问题,但是这款软件是一个商业收费软件,2005年后该公司BitMover决定收回Linux内核社区的免费使用权。
数次磋商无果后,Linus Torvalds作为暴躁老哥就表示,不能办就别办了。二话不说撸起袖子就干,花了10天时间,开发了一个开源免费的版本控制系统软件——Git,意思为“不愉快的人”,直接取代了BitKeeper,成为了当今世界上最为流行的版本控制工具。
在这里插入图片描述

3. 下载安装Git

3.1 下载Git

首先打开Git官网:Git官网
点击这里的Download for Windows,这里的教学以默认的命令行界面git为例,下面的GUI版本提供了一个图形用户界面,使得用户可以通过点击和选择来管理Git仓库,而不需要手动输入命令行指令,该教程不会聚焦于GUI版本。
在这里插入图片描述
点击后,会有多个版本进行安装,上面的Standalone Installer是独立安装程序,通过运行安装程序来安装Git,它会在系统中创建相应的程序和环境变量,因此适合我们现在的需求。
而下面的Portable是便携版,一般是如果我们需要放在一些移动介质所需要的版本,它的安装过程不会将Git添加到系统目录中,而是将所有文件都放在安装目录中。便携版可以在没有安装过程的情况下直接运行,因此适合携带在便携式存储设备(如USB闪存驱动器)中使用,方便在不同计算机之间使用Git。
所以这里我们点击64-bit Git for Windows Setup就好了。
在这里插入图片描述
但是这里的下载速度会比较慢,可以科学上网解决。

3.2 安装Git

下载完后,我们点开对应的安装包,点击Next。
在这里插入图片描述
然后是选择安装目录,这里需要注意安装目录里不能有中文。
然后点击Next进入下一步。
在这里插入图片描述
这一步可以不修改上面的选项,直接点击Next下一步。
1.Additional icons(附加图标):是否在桌面上创建 Git 的快捷方式图标。
2.Windows Explorer integration(Windows 资源管理器集成):
Open Git Bash here(在此处打开 Git Bash): 是否在右键菜单中添加“在此处打开 Git Bash”选项。
Open Git GUI here(在此处打开 Git GUI): 是否在右键菜单中添加“在此处打开 Git GUI”选项。
3.Git LFS (Large File Support)(Git 大文件支持):
是否安装 Git LFS 插件,用于支持大文件的版本控制。
4.Associate .git configuration files with the default text editor(将 .git 配置文件与默认文本编辑器关联)**:
是否将 .git 配置文件与系统的默认文本编辑器关联。
5.Associate .sh files to be run with Bash(将 .sh 文件与 Bash 关联):
是否将 .sh 脚本文件与 Git Bash 关联,以便可以直接运行。
6.Check daily for Git for Windows updates(每天检查 Git for Windows 更新):
是否每天检查 Git for Windows 的更新。
7.(NEW!) Add a Git Bash Profile to Windows Terminal(将 Git Bash 配置文件添加到 Windows 终端):
是否在 Windows 终端中添加 Git Bash 配置文件。
在这里插入图片描述
这一步是创建开始菜单文件夹,也是直接点击Next就好。
在这里插入图片描述
这一步是选择Git的默认编辑器,这里建议修改成Visual Studio Code,后文也将会以Visual Studio Code为例,选择自己常用的ide即可,然后点击Next。
在这里插入图片描述
这一步是设置新仓库中初始分支的名称,上面是Git默认的master分支,下面可以是你自己选择的分支名,一般是main,这里现在推荐你直接选择下面的这一个就好,后面环节会对这里再进行详细解释。
在这里插入图片描述
后面的设置几乎不变,一直点击Next就好。
这一步是对PATH环境的调整。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里点击Install即可。
在这里插入图片描述
点击完后等待其安装完毕。
这里点击Finish后因为这里默认勾选了发行文档,所以我们可以取消勾选后,点击Finish。上面的一个选项是启动Git Bash,这是Git的命令行工具,我们暂时不需要从这个地方打开。
在这里插入图片描述

3.3 验证安装是否成功

验证的方式有两种,一种是我们直接打开我们的Visual Studio Code,点击左边第三个后,如果出现的是不是让你安装Git便是成功,比如我这里已经打开了项目,所以这里提示我让我Initialize Repository(初始化仓库)。
在这里插入图片描述
当然如果你的Visual Studio Code是启动的过程中安装的Git,你可能需要关闭Visual Studio Code再打开一遍才可能会识别到安装的Git。

第二种方法是我们在桌面上右击,然后如果点击后没出现以下的界面,则还需要点击显示更多选项,然后就应该会出现下面的界面,然后这里便有Open Git GUI here和Open Git Bash here这两个选项,就说明我们的安装成功了。
在这里插入图片描述

4. 配置Git

配置Git的方法有很多,这里主要是为了后续上传我们前面说的代码存档,需要进行一个小小的设置。官方教程中也推荐你进行这一步的设置,也就是设置Git用户名和电子邮件地址。
Git官方文档/书籍
这里的电子邮箱地址建议先去GitHub官网上注册一个账号,然后这里的电子邮箱就是GitHub上注册账号的邮箱,这样的话会方便我们前面说的团队合作场景中,大家互相方便沟通。
GitHub官网
注:GitHub也需要科学上网才能流程使用。
我们在桌面上右击后,点击显示更多选项,再点击Open Git Bash here,就会出现Git的命令行工具。
如下图所示。
在这里插入图片描述
我们需要输入的命令格式如下。

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

其中的John Doe可以改为自己的用户名,邮箱也可以改为自己的邮箱。
在这里插入图片描述
提示:在这里想粘贴需要右击后点击Paste,或者我们右击后看到这里的Paste快捷键,并不是传统的ctrl+v
至此我们就完成了Git的配置。

5. Git基础使用

Git使用的方式主要是两种,一种是通过Git Bash输入命令进行使用,一种是我们使用Visual Studio Code自动使用Git。

5.1 通过Git Bash使用

5.1.1 创建一个新的仓库。

第一步我们需要创建一个新的仓库(Repository),为什么需要一个仓库呢?我们玩游戏的时候开始新的游戏就会创建一个新的存档,就像我们玩游戏新游戏也是会让你选择一个存档位置一样,我们的一个项目开始也就会有一个存放存档的仓库,一个游戏我们可以有多个存档,可能是多个人游玩导致的,因此这些存档有不同的存档位置,因此就是不同的仓库。
一般来说一个项目是最大的,其下面可能会有多个仓库,每个仓库之中会有多个存档。

5.1.1.1 克隆别人的仓库

当然我们有的时候可以下载网上的存档直接进行游戏,我们也可以直接拿别人的仓库过来直接开始项目,这种操作叫做克隆(clone)。
我们在本地选择好要存储的地方,然后右击后选择显示更多选项,然后点击Open Git Bash here。
在这里插入图片描述
然后我们去GitHub上选择一个项目点击Code,然后选择下面的复制地址。
在这里插入图片描述
在Git Bash里输入命令。

git clone (加上刚刚的地址)

这里复制和前面说的一样建议直接右击Paste,因为默认快捷键不是ctrl+v。
再按下回车后,Git就会把对应的仓库直接全部下载下来。
在这里插入图片描述
在这里插入图片描述

5.1.1.2 自己创建一个本地仓库

我们还是要打开对应的我们想创建仓库的文件夹,然后右击后选择显示更多选项,然后点击Open Git Bash here。
在这里插入图片描述
然后输入命令。

git init

再按下回车。
在这里插入图片描述
我们的文件夹里便会有一个.git文件夹,这个便是我们的代码仓库了,这里面的东西千万不要动。
在这里插入图片描述
如果你无法看见这个文件夹,可能是你没有开启显示隐藏文件夹,点击上面的查看,然后点击显示,勾上隐藏的项目即可。
在这里插入图片描述

5.1.2 管理存档

我们现在有了存档之后,我们开始书写我们的代码,我今天写了个1.txt进去,现在我想保存以下我目前的进度。
在这里插入图片描述
这里虽然1.txt在这个文件夹,但其实还没有放进仓库之中,因此我们现在需要在Git中提交我们这个存档到仓库之中。
在这里插入图片描述
我们打开这里的Git Bash,输入以下命令。

git add 1.txt

在这里插入图片描述
但这一步只是暂时将这个文件放到暂存区,可以理解成存档放进仓库需要先拿一个盒子将存档装起来,再放到仓库里。
当然如果这里有很多个文件的话,你也可以输入以下命令,会将所有文件放入暂存区。

git add .

注意这里.和add之间有空格。
在这里插入图片描述
我们现在存档已经打包好,我们需要将这个存档上交到仓库去了,执行下面命令。

git commit -m "(备注内容)"

在这里插入图片描述
这样代码就被我们成功添加到了仓库之中。
我们现在就会有保存好的存档在仓库之中,我们可以输入以下代码去检查这些存档。

git log

在这里插入图片描述

这里就能发现上面不仅有提交的记录,记录上还会有时间提交人等信息,帮助我们溯源,如果这份代码有问题,我们就可以找到对应负责的人。

我们还可以输入以下命令,检查每次提交修改了哪些文件。

git log --stat

在这里插入图片描述
我们发现每次存档还会有一个存档ID,也就是黄色字的那一行,我们可以使用这个ID去查看每次存档提交与之前的存档有哪些地方不同。
输入以下命令。

git diff (commit ID)

这里可能的结果比较抽象,但是如果我们使用下一种方法使用Git就可以清楚的看到代码前后的差异。

那么如何读取之前的存档,让我们的代码回到之前的保存节点呢?我们可以输入以下的两行命令中的任意一个。

git reset --hard [commit ID]
git checkout [commit ID]

这两行代码的区别在于是否会影响暂存区或当前分支的HEAD,上面会将工作目录和暂存区(staged area)也更新到该提交的状态,而下面的不会影响。

我们前面提到了很多分支一词,我们在前面创建完仓库后,我们现在每一行命令都会有一个括号(main),其实表示的就是我们现在的所有操作都在main这一个分支下,分支是什么呢?
我们前面说过,我们可能有多个人开发的代码,这些代码之间互相可能会有冲突或者问题,所以这些当然不能是直接放到原来的代码之中的,我们之前安装的时候选择了默认的分支名,因为修改成了main所以现在创建完仓库后,Git会帮我们创建这个默认分支main,当我们如果发现某一分支没有问题的时候,我们可以再将这个分支合并到main中,我们以后会详细演示这个过程。
相关的命令如下。

git branch new-feature
git checkout branch-name
git checkout -b new-branch
git merge branch-name
git branch -d branch-name
git branch

1.创建分支:
你可以从当前分支(通常是 main 或 master)创建一个新的分支。例如,使用 git branch new-feature 命令创建一个名为 new-feature 的新分支。
2.切换分支:
使用 git checkout branch-name 命令可以切换到指定的分支。如果分支不存在,这个命令会失败。
3.创建并切换分支:
git checkout -b new-branch 命令会创建一个新的分支,并立即切换到这个新分支。
4.合并分支:
当你在分支上完成开发后,可以使用 git merge branch-name 命令将该分支的更改合并到当前分支。
5.删除分支:
使用 git branch -d branch-name 命令可以删除一个已经合并到其他分支的分支。如果分支还没有合并,可以使用 -D 选项强制删除:git branch -D branch-name。
6.分支管理:
git branch 命令可以列出所有的分支,其中当前分支会用星号 * 标记。

5.2 通过Visual Studio Code使用

我们在IDE中完成对应的代码操作后,我们点击左边的第三个Source controls,点击后由于我们这里没有创建对应的仓库,所以这里的第一步当然是创建仓库。
在这里插入图片描述
我们直接点击Initialize Repository创建仓库,点击后界面就会变成这样。
在这里插入图片描述

和前面一样我们现在需要将代码进行一个存档的保存并提交。与前面不同的是这里它直接出现的是Commit也就是提交到仓库之中,没有前一步添加到暂存区的操作。然后这里的commit上面我们也可以输入对应的备注信息在文本框中。
注意我们提交之前之前记得要保存一下文件,可以使用ctrl+s快速保存,在Visual Studio Code中,如果你的文件没有保存,其右边会出现一个小圆点,比如前两张图的1.txt右边有个小圆点,而下面的图没有,代表这个文件已经被我保存了。
那这个旁边的U是什么意思呢?这表示该文件是unstaged的,即它已经被修改但还没有被添加到暂存区。但没有关系我们这里直接点击commit。

在这里插入图片描述
这里也会出现一个弹窗提示我们没有将存档先添加到暂存区中。
在这里插入图片描述
我们这里直接点击Always就好,这样它就会默认直接将东西帮我们放进暂存区然后再提交了。
在这里插入图片描述
然后我们的左下的这个Graph就会显示我们有多少次提交,以及这些提交之间的关系。

比如我们现在再次修改这个代码,我们右边的这个图标又会出现一个1的下标,提示我们有一个未提交到仓库的文件。
在这里插入图片描述
我们这边再次提交后,Graph下面就会出现新的提交记录。

在这里插入图片描述
然后这个记录和原来的记录有一个线连起来,表示它是从原来的那个存档上演变过来的,我们点击后,右边会出现一个类似编辑器的界面,但是这里不能修改(只读),这里显示的绿色部分就是我们新添加的内容,也就是这两个存档之间的不同的地方,就这样被清晰的展示出来了。
在这里插入图片描述
这个地方展示了一个新的存档,这个存档对原来的存档进行了删除,红色部分展示了删除了哪些内容,然后绿色部分是其新添加的内容,也就是前面Git Bash里的diff命令的结果的一个可视化展现。
当我们点击左下角main的时候就可以对分支进行编辑了。
在这里插入图片描述
点击后上面的搜索框会出现对应的选项,然后我们点击Create new branch。
在这里插入图片描述
比如这里我创建了一个新的Test分支,然后我进行了代码修改,现在打算将这两个分支进行合并。
我们按住Ctrl+Shift+P打开命令面板,再输入Git: Merge Branch命令,然后选择要合并的分支如下。
在这里插入图片描述
点击后,分支就完成了合并。左下的Graph上面的图标显示出main和Test分支完成了合并。
在这里插入图片描述

6. Git完成远程提交

6.1 Git Bash版本

我们先打开GitHub官网,然后点击自己的头像然后点击Settings。
在这里插入图片描述
然后点击左边的SSH and GPG keys,这里我已经添加过一个。
在这里插入图片描述
我们这里点击右上角的New SSH key
在这里插入图片描述
接下来就会进入这个界面。
在这里插入图片描述
现在我们就要生成SSH key了。
我们打开命令行,输入以下命令。

ssh-keygen -t rsa -b 4096 -C "你的注册邮箱"

按下回车后再按下三次回车就好。然后我们就会出现下面的界面,代表SSH keys生成完毕。
在这里插入图片描述
命令行的这个地方提示了SSH keys生成的地方,打开对应文件夹可以找到SSH keys。
在这里插入图片描述
打开对应文件夹后,用记事本打开这个.pub结尾的文件。
在这里插入图片描述
打开后复制里面的内容,然后回到之前的添加SSH Key界面,上面的Title随便输入一个名字就好。
然后下面的Key栏粘贴我们刚刚复制的生成的SSH key。
在这里插入图片描述
完成后点击下面的Add SSH key,然后会让你再输入一遍账号的密码进行确认,之后就完成了添加。
现在我们可以检查以下是否能成功建立连接,这一步同样需要科学上网。
我们输入以下命令。

ssh -T git@github.com

回车后对于下一个询问输入yes再回车即可。
在这里插入图片描述
出现Hi的那一行就说明SSH连接建立完毕。

现在我们先创建一个远程仓库,这个远程仓库,就相当于我们前面说的大家一起使用的网盘,本地的仓库只是在自己电脑上,别人难以访问,现在放到GitHub上之后,它就是一个网上的资源,当然你也可以设置哪些人可以访问。
我们打开GitHub页面,然后选择这里的加号,然后点击New repository。当然也可以在别的界面创建仓库,比如左边的侧栏,或者是个人仓库界面都可以创建一个新的仓库。
在这里插入图片描述
点击后,我们输入这个仓库的名字,下面Description一栏中可以输入这个仓库的描述,下面的Add a README file,也建议勾选。
在这里插入图片描述
其余选项不动后,然后点击右下角的Create repository就完成了仓库的创建。
完成创建后就只会有一个孤零零的README文件展示了这个项目是做什么的。
在这里插入图片描述
我们其实可以直接点击Add file添加文件,但是只能上传单一的文件,无法直接上传文件夹,而且本教程就是想教大家如何使用Git进行上传。我们这里点击Code,然后选择SSH,然后复制对应的SSH地址。
在这里插入图片描述
我们回到要上传的文件夹下,我们向前面的步骤一样开始操作。
在这里插入图片描述
当我们完成本地仓库的提交后,我们下一步就是将这个存档提交到远程仓库之中去。
我们输入以下指令。

git remote add origin (远程仓库的SSH地址)

在这里插入图片描述
我们输入以下指令会发现报错。

git push -u origin main

在这里插入图片描述
该指令是说我们将本地的main分支推送到远程仓库origin中,但是现在远程仓库有README文件,我们本地没有,这就是我们前面说的发生了冲突,我们为了解决这个问题,我们需要先拉取远程仓库的更改,以确保我的本地仓库是最新的。
我们输入命令。

git pull origin main

在这里插入图片描述
我们发现这里继续报错,因为这里我们都是main分支,这里引起了冲突。
由于我们这里是不同的文件,我们现在要求它们强制合并其实也不会有什么问题,因此我们可以使用下面的命令。

git pull origin main --allow-unrelated-histories

在这里插入图片描述
这里我们可以发现文件夹下多了原来的README文件,因为这里我们进行了强制合并。

我们再输入远程提交命令。

git push -u origin main

在这里插入图片描述
这里提示已经成功,我们再去GitHub上查看一下。
也成功完成上传。
在这里插入图片描述
这其实告诉我们正确的代码顺序,其实是先创建远程仓库,然后我们将仓库和我们的本地仓库进行同步(pull),然后我们进行代码书写,然后完成修改后,再提交到远程仓库,这才是正确的远程仓库使用顺序。

6.2 Visual Studio Code版本

Visual Studio Code版本的操作如下。
我们回到刚刚的Souce Control界面,然后点击这里的Publish Branch。
在这里插入图片描述
这里会弹出一个弹窗,这个弹窗会让你去登录GitHub。
在这里插入图片描述
这里确定是自己的账号后点击Continue即可。
在这里插入图片描述
然后后面会有一个正式的权限授权,继续点击Authorize Visual-Studio-Code即可。允许后面的弹窗。
回到Visual Studio Code后,这里会问你要上传到私人仓库,还是公开仓库,这就看你的具体项目情况了。
在这里插入图片描述
我这里选择上传到公共仓库,等待一会后,它就会上传完毕,当然这里需要科学上网。
在这里插入图片描述
成功后左边的Graph里的这个分支的右边会多一个云的标志,表示你的这个分支已经上传到GitHub上了。
我们打开GitHub上能看到成功上传。

在这里插入图片描述
当我们现在本地又有新的存档提交到仓库之中时,我们的这里云端就会落后与本地的仓库,这里的Graph也会出现左边的这种情况,我们这时候再点击左边的Sync Changes就能完成前面的Pull和Push的操作。
在这里插入图片描述
同样这里会提示你,这里可以选择OK,Don’t Show Again即可。
在这里插入图片描述
等待上传完毕,现在云端和本地又实现同步了。
在这里插入图片描述
这就是全部Git和GitHub的基础教学教程,一些其他复杂的实际使用这里没有详细说明,希望大家能学会Git的基础使用,能在GitHub上找到优秀的开源项目帮助到自己,在未来和别人的多人项目中做出自己的贡献。