git使用教程(入门级)

大家好,前段时间因为我想把自己的项目上传到github上,然后使用git的时候遇到了一堆问题,所以特写此篇文章,来跟大家聊一聊git的使用方法。

文章参考了网上许多资料,有bilibili的狂神说的视频以及公众号文章,有stormzhang的《从0开始学Github系列》等等。

我感觉我的文章结构写的还蛮清晰的。大家也可以通过目录看自己需要了解哪个,然后去看特定的也行。

话不多说,我们直接开始聊git。

一、什么是git

简单来说git其实就是一个版本管理工具。我们可以使用git做很多事情,比如说:

  • 我们想把本地的代码放到远程服务器里

  • 版本迭代时,记录每个版本添加的功能以及代码

  • 回退到特定的代码版本

  • 多人协作,每个人负责一个功能时,大家需要在同一个代码的基础上进行修改。这个时候,大家需要互不影响的同时,又可以同步别人的代码

    ……

当然,如果看了这些还是有点摸不着头脑也没关系。看一看 git 的具体命令都是干什么的之后,每个人对 git 应该都会有自己的一套见解。

二、git安装

使用git之前,得先把它安装到我们自己的电脑上。

这里给出git的下载安装的网站,其余的大家如果不会,网上有很多教程,大家可以跟着教程安装就行。

三、使用git

在项目目录下点击右键,然后点击git bash。
在这里插入图片描述

然后会弹出这样一个窗口
在这里插入图片描述

我们在这个窗口里输入我们的命令即可。

三、git配置

(一)配置用户相关信息

使用git的时候,一定先要配置用户的用户名和邮箱,否则会报错。因为每一次的提交中都会带上这些信息,用来标识是谁做了这些更改。就像下图一样:
在这里插入图片描述

配置信息的命令格式为:

git config --global(可选)  键名  赋予的值

其中,global 是可选的。

–global 选项用于指定配置的作用范围是整个用户账户。

带了 --global 选项,无论你在这个用户的系统中使用哪个 Git 仓库,这些配置都会生效。

不带 --global 选项,那么这些配置项将只应用于当前 Git 仓库。

我们配置的是用户的用户名和邮箱,所以一般情况下都是带 --global 选项的。其命令为:

git config --global user.name "anum"   #配置用户名为 anum
git config --global user.email "123@qq.com"    #配置邮箱信息为 123@qq.com

(二)删除配置信息

删除配置信息的命令格式为:

git config --global(可选) --unser 要删除的键名

比如说我们现在要删除该用户的用户名的配置,那么可以执行如下命令:

git config --global --unser user.name

(三)查看配置信息

  1. 查看所有当前生效的 Git 配置信息

    它会显示当前项目的所有配置,包括系统级配置、全局配置和当前仓库级配置。Git 会根据优先级从高到低显示配置,优先显示当前仓库级别的配置,然后是全局配置,最后是系统配置。

    命令:

    git config --list(或者 --l也行)
    
  2. 查看系统级别的 Git 配置

    显示在系统级别(对所有用户和所有仓库)生效的配置。

    这些配置信息,其实都保存在我们电脑中的文件中。系统级别的配置,在 git 安装目录下的 \etc\gitconfig 文件当中。

    命令:

    git config --system --l
    
  3. 查看用户级别的 Git 配置

    显示当前用户的全局Git配置。

    配置信息存储在 C:\Users\Administrator\ .gitconfig 文件当中。Administrator指的是账户名,每个人的账户名都不一样。

    命令:

    git config --global --l
    

四、git基本理论

在真正介绍 git 命令之前,先介绍一下 git 中的各个工作区域。

git 在本地一共有三个工作区域,外加远程的 git 仓库,就是四个工作区域。

本地的工作区域有:

  • 工作目录(Working Directory):就是我们电脑上存储项目的那个目录。
  • 暂存区(Stage/Index):临时存放我们有改动的文件的区域。它其实就是一个文件,记录着每一次的改动都有哪些。
  • 本地仓库(Repository 或Git Directory):存放数据的位置,里面放着提交的所有版本的数据。

除了上述的三个本地工作区域,还有一个远程的工作区域,叫远程仓库(Remote),它是存放代码的服务器,像github、gitee的存放代码的区域,都可以叫远程仓库。

下图是文件在四个区域内转换的关系和命令(图片借鉴自狂神说公众号文章)
在这里插入图片描述

其中History指的就是本地仓库。

五、git拉取代码

使用 git 拉取代码的意思就是,使用 git 工具,把别人提交到远程仓库的代码下载到本地。

首先,我们要到想要存放代码的目录,然后进行git操作。

使用 git 拉取代码,一共有两种方式。

(一)git init & git pull

  1. git init 初始化 git 仓库

    在使用 git 进行操作前,一定要先建一个 git 仓库才行。git init是用来初始化 git 仓库的一个命令。

    我们到工作目录下面,执行下面命令

    git init
    

    这样,就代表初始化了一个 git 仓库。

  2. git pull 拉取项目

    建立完仓库之后,我们就可以使用git pull 进行项目拉取。

    先找到要拉取的项目的url。

    以我建立的github仓库为例,点击code的绿色按键,然后点击HTTPS下面的两个小方块图标,复制url。

在这里插入图片描述
然后,执行git pull 命令:

git pull https://github.com/lilia1204/test.git

在这里插入图片描述

执行结果和上图差不多,就表示拉取成功啦。

(二)git clone

第一个方法是先在本地建立仓库,然后再拉取项目。而git clone是直接把远程仓库搬到本地来。

举个例子,我首先建立了一个空的文件夹 test
在这里插入图片描述
然后我在一个空的文件夹 test 下面执行 git clone命令:

git clone https://github.com/lilia1204/test.git

然后再看我的项目文件夹里的变化:
在这里插入图片描述

可以发现,我原本的test里又多了一个test文件夹,但是没有 .git 文件夹。这是因为我在我原本的test目录下,直接把我远程的 test 仓库一整个给搬了下来。所以我原本的test目录不算一个git仓库,test/test 目录才是一个 git 仓库。
在这里插入图片描述

(三)查看该目录是不是git仓库

这里有两种方法查看该目录文件夹是不是git仓库:

  1. 到工作目录下,看有没有 .git 文件夹。

    .git 文件夹是隐藏项目,所以需要将隐藏项目也显示出来,才能看得见。
    比如说在windows系统里,就可以如下操作:
    在这里插入图片描述
    在这里插入图片描述

  2. 使用git status 命令

    在git bash中输入

    git status
    

    如果git 仓库初始化成功了,显示如下图
    在这里插入图片描述

    如果git仓库没有初始化成功,那么就会如下图所示
    在这里插入图片描述

六、git 提交代码

(一)关于授权

想象一下,如果我们想要往自己的 github 账户提交代码,但又不希望别人随意提交,那么应该怎么办?所以说是不是应该在提交之前先验证一下身份。

Github从2021年8月14日开始,使用git对github进行身份验证操作的时候不再接受使用账号密码形式clone和push代码。这里身份验证有别的两个方案,一个是使用access_token,另一个是使用SSH。

使用asscess_token的可以看以下两篇文章,我个人跟着做了一遍感觉步骤写的还挺详细的。

GitHub改为token验证后,如何提交代码?_new personal access token-CSDN博客

GitHub使用Personal access token - 小旭的blog - 博客园 (cnblogs.com)

当然,我认为用SSH比较简单一点吧,所以下面主要来讲一下怎么用SSH授权。

(二)生成SSH key

SSH是一种协议标准,目的是为了实现安全远程登陆以及其它安全服务。github身份验证,就可以用这个,而且是一种一劳永逸的方法。

Linux 和 Mac 是默认安装了 SSH的,windows 的git bash里也带了SSH。

可以在终端输入ssh ,查看有没有安装SSH。出现以下提示,说明已经装了SSH。
在这里插入图片描述

如果已经安装了SSH,那么可以输入以下命令生成ssh key。该命令的含义,是使用rsa算法生成密钥。

ssh-keygen -t rsa	

输入之后,连按三个回车键(什么都不需要输入)。然后就会生成两个文件 – id_rsa 和 id_rsa.pub。其中id_rsa是私钥,id_rsa.pub是公钥。

这两个文件默认生成目录为:

  • linux/Mac系统:~/.ssh
  • win系统:/C/users/username/.ssh

这俩都是隐藏目录。

(三) SSH 授权原理

下面稍微解释一下ssh身份验证的原理,不想看的可以跳过哈,不影响后面使用。

私钥和公钥,这两个配对起来,叫一对密钥。

公钥加密后的密文,只能通过相应的私钥才能解密。而且通过公钥推理出密钥几乎是没有可能的。

那么github远程登录是怎么做的呢。

  • 首先,我们本地主机要向远程主机发送登录请求。
  • 然后远程主机收到消息后,随机生成一个字符串并用公钥加密,发回给本地。
  • 本地拿到该字符串,用存放在本地的私钥进行解密,再次发送到远程主机。
  • 远程比对该解密后的字符串与源字符串是否等同,如果等同则认证成功。

从上述的步骤来看,我们要把公钥放在远程主机上面,也就是把它放在服务器上面。也就是把 id_rsa.pub文件中的内容放到Github上去。

(四)Github上添加SSH key

  • 点击右上角头像按钮
    在这里插入图片描述

  • 点击设置

在这里插入图片描述

  • 点击ssh密钥按钮
    在这里插入图片描述

  • 点击添加新ssh密钥
    在这里插入图片描述

  • 在红色框里把id_rsa.pub文件中的东西复制粘贴过来,title那一栏不需要填写。然后点击下方Add SSH key按钮。

在这里插入图片描述

  • 生成成功后的界面是这样的。

在这里插入图片描述

(五)SSH 测试

SSH key添加成功之后,输入

ssh -T git@github.com

输入完之后会出现这种界面,大概意思是以前没有连接过这个主机,问我们是否信任Github的服务器。我们只需要手动输入 yes ,然后回车就好了。

在这里插入图片描述

然后再次测试一下,显示如下图所示,就代表添加成功啦。
在这里插入图片描述

(六)向Github提交代码

如下图所示,向github提交代码需要下图三个步骤。分别是git add -> git commit -> git push。
在这里插入图片描述

1. git add

执行git add命令,把我们文件放进暂存区。

具体命令是git add 文件名

示例

git add test.md  #将test.md放到暂存区
git add . 	   #把所有有变化的文件都放进暂存区

2. git commit

这个命令的意思是说把暂存区中有变更的文件提交到本地仓库。比如新添加的文件、有更改的文件、删除的文件、文件的权限变化了等等。

具体命令是git commit -m '备注的信息

示例:

git commit -m 'my first commit' #,-m一定要有,不然会出错'

3. 和远程仓库连接

我们现在已经把代码放到了本地仓库,那么如果想把本地仓库的东西推送到远程仓库,需要把本地的git仓库和和远程的仓库关联起来。执行下列命令:

git	remote add origin git@github.com:lilia1204/test.git

其中:
git remote add:添加远程仓库的意思

origin:你的远程仓库名(本地的别名),很多时候都会取名origin,当然你也可以取别的名字。

git@github.com:lilia1204/test.git :你远程仓库的URL,可以去你的github仓库里,如下图,点击code,然后点击SSH就可以看到。上述只是我的一个示例,需要换成你们自己的URL。
在这里插入图片描述

4. git push

把本地仓库和远程仓库关联之后,就可以用git push 命令来推送代码。

具体命令为git push 远程仓库名 分支名

示例:

 git push origin main #推送到远程仓库origin的main分支中

关于分支可以看文章后面。

七、查看状态

(一)git status – 查看暂存区状态

git status命令是查看当前暂存区的状态的。

具体的输出有:

  • 未跟踪的文件 (Untracked files):指仓库中新添加的文件,但还没有被 Git 跟踪,也就是说它们没有被添加到暂存区。你可以使用 git add 命令来跟踪这些文件。
  • 已修改但未暂存的文件 (Changes not staged for commit):这些是已经被修改过的文件,但修改还没有被添加到暂存区。如果想把它们添加到下一个提交中,需要使用 git add
  • 已暂存的文件 (Changes to be committed):这些文件已经被添加到暂存区,并且将在下次执行 git commit 时被提交。
  • 已提交但本地与远程仓库不同步的分支状态:会显示当前分支是否与远程分支有不同步的提交(比如本地有新的提交还未推送到远程,或者远程有新的提交本地还没有拉取)。

示例:

$ git status
On branch main
Your branch is up to date with 'origin/main'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    modified:   file1.txt

Untracked files:
  (use "git add <file>..." to include in what will be committed)
    file2.txt

no changes added to commit (use "git add" and/or "git commit -a")

这个输出展示了:

  • 你当前位于 main 分支,并且和远程仓库的 main 分支同步。(关于分支可以看后面的解释)
  • file1.txt 已经被修改,但尚未暂存。
  • file2.txt 是一个新文件,未被 Git 跟踪。

(二)git log – 查看提交记录

git log 命令可以查看所有产生的 commit 记录,包括提交的用户名,提交的用户邮箱,提交时间信息和附带信息,就是我们git commit -m 'first commit' 的 first commit信息。
在这里插入图片描述

八、分支

git中的分支,可以理解为是不同的工作线。他们互相是独立的,不相互影响。

我们可以利用这个,来同时开发不同的功能,修复不同发bug。比如A和B同时在开发不同的功能,那么他们可以分别新建一个分支,最后开发完后,把他们两个的分支再合并起来就好了。

不过每个仓库都有一个主线,例如main和master分支,这里一般放的是已发布的代码。

(一)git branch 查看&创建分支

直接输入git branch ,意思就是查看当前仓库的所有分支。

前面有星号的是当前分支。

在这里插入图片描述
如果想在当前仓库添加新分支,可以写为

git branch 分支名 

比如我想新加一个名叫 a 的分支,就可以写 git branch a

(二)git checkout 切换&创建并切换分支

如果想要切换当前分支,就需要下面的命令:

git checkout 分支名

比如切换到a分支就可以写成 git checkout a

如果不想先用branch新建分支再切换,想一步到位,那么就可以使命令

git checkout -b 分支名

比如想新建个 c 分支,并把当前分支换成 c ,就可以执行命令 git checkout -b c

(三)git branch -d&-D删除分支

如果说我们想删除一个分支,可以执行命令

git branch -d 分支名

比如我们想删除a分支,就可以写成 git branch -d a

不过,有的时候可能回删除失败。比如要删除的a分支还没有合并到main分支。这种情况下,执行git branch -d a 是删除不了的。我们可以使用下面的命令来删除

git branch -D 分支名

比如强制删除a分支: git branch -D a

(四)git merge 合并分支

假设某个功能已经在 a 分支写的差不多了,现在要将它合并到main分支里,然后上线。

这种情况下,需要两步走:

  1. 把当前分支切换到main分支,如果已经在 main 分支里了,就不用切换了
  2. 执行 git merge a命令,意思时把a分支合并到当前分支。

不过,有的时候会因为产生冲突而失败。

关于如何解决冲突的事儿,我在之后的文章中会写到哦,感兴趣的可以去看看

最后,小白第2次正式写一个文章,如果有什么说的不对的,或者哪里没说清楚的,欢迎评论区讨论批评哟~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值