Git 和 GitHub 的快速上手 初学者必看 Git的下载与安装 Git的常用指令 分支的使用 SSH免密登录 团队内部协作 跨团队协作

Git & GitHub 的快速上手

一、Git和版本控制的概念

  1. Git是免费的,开源的分布式版本控制工具

  2. 版本控制是一种记录文件内容变化、以便查阅或修改特定历史版本的工具

  3. 版本控制工具的分类:

(1) 集中式版本控制工具

有一个单一的集中管理的服务器,保存所有文件的修订版本,工作人员需要连接到这台服 务器才可以查阅或修改历史版本,缺点是如果服务器一旦出现故障,所有工作人员都无法 提交更新或查看、修订历史版本,常见的如SVN

(2) 分布式版本控制工具

每一台主机都可以像服务器一样保存文件的修订版本,并且允许其他主机从自身主机查看、修订历史版本

  1. 集中式版本控制工具存放的是文件每个版本的差异,回退版本必须一个版本一个版本的回退

  2. 分布式版本控制工具存放的是所有历史版本的索引(所需的磁盘空间很少),回退版本可直接通过 索引回退

二、Git的安装过程

  1. 去官网下载https://git-scm.com/

  2. 安装过程全部下一步即可(使用默认)

  3. 在桌面或者磁盘目录下右击鼠标点击Git Bash Here即可打开Git终端

在这里插入图片描述

三、Git的本地结构及初始化本地仓库

  1. Git的本地结构

在这里插入图片描述

  1. 初始化本地仓库

(1) 在磁盘中创建一个文件夹GitResp(自定义名称)作为Git的本地结构

(2) 打开Git终端

① Git中的命令和Linux是一样的

i. 查看Git版本

在这里插入图片描述

ii. 清屏

在这里插入图片描述

iii. 设置签名(用户名和邮箱)

在这里插入图片描述

② 本地仓库的初始化操作

i. 进入创建的本地仓库的文件夹,右键打开终端

在这里插入图片描述

ii. 会在此文件夹下创建一个.git文件夹(已隐藏)

③ Git本地结构的详细介绍

在这里插入图片描述

四、代码托管中心的介绍

本地库和远程库的交互方式分类:

1. 团队内部协作

在这里插入图片描述

2. 跨团队协作

在这里插入图片描述

托管中心的分类:

(1) 局域网环境下:可以搭建GitLab服务器

(2) 互联网环境下:可以使用GitHub或Gitee(码云)

五、Git常用命令

  1. add和commit命令

用来将文件添加到缓存区、提交到本地库

(1) 在工作区创建一个文件Demo.txt

(2) 将工作区的文件添加到暂存区

在这里插入图片描述

(3) 将暂存区的内容提交到本地库

-m “xxx” 给提交到本地库的文件添加注释

在这里插入图片描述

(4) 注意

红框表示此文件不在工作区中

在这里插入图片描述

i. 不放在工作区的文件,git不进行管理

ii. 即使放在工作区的文件,git也不管理,必须通过add、commit命令才可管理

  1. status命令

查看的是状态信息

(1) 创建一个文件Demo2.txt,查看状态

在这里插入图片描述

(2) 对Demo2.txt执行add命令添加到暂存区后查看状态

在这里插入图片描述

(3) 对Demo2.txt执行commit命令提交到本地库后查看状态

在这里插入图片描述

		i. 红框表示暂存区无文件,已经全部提交到本地库
		ii. 对文件内容修改之后需要重新执行add、commit命令将其提交到本地库
  1. log命令

(1) git log

显示从最近到最远的日志信息

在这里插入图片描述

空格:下一页
b:上一页
q:退出

(2) git log --pretty=oneline

在这里插入图片描述

(3) git log --oneline

在这里插入图片描述

(4) git reflog

HEAD@{X} 表示回退到这个版本需要X步

在这里插入图片描述

  1. reset命令

前进或后退历史版本

注意:在终端中选中就表示复制,右键选择paste即可粘贴

在这里插入图片描述

  1. hard\mixed\soft参数

git reset --hard [索引号]:本地库的版本修改时,暂存区和工作区的版本随之修改

git reset --mixed [索引号]:本地库的版本修改时,暂存区随之修改,工作区不修改

git reset --soft [索引号]:本地库的版本修改时,暂存区和工作区都不修改

  1. 删除文件/找回被删除的文件

(1) 创建一个Test2.txt文件,对其执行add、commit命令

(2) 删除工作区的Test2.txt文件

在这里插入图片描述

(3) 将删除操作同步到暂存区和本地库

在这里插入图片描述

(4) 查看日志

在这里插入图片描述

发现并没有在本地库中物理删除该文件,而是添加了一条删除的记录,还可以根据索引号 找回被删除的文件

(5) 通过索引找回被删除的文件

在这里插入图片描述

  1. diff命令

比较某一文件工作区和暂存区内容的差异

(1) 创建一个文件Test3.txt,其中有内容aaaa,对其执行add、commit命令

(2) 更改工作区Test3.txt文件的内容,增加bbb,内容成为aaaabbb,导致工作区和暂存区内容 不一致

(3) 对此文件执行git diff Test3.txt命令

在这里插入图片描述

(4) git diff 表示对工作区和暂存区的所有文件进行差异的比较

(5) git diff [索引号] / [HEAD] [文件名] 表示对工作区和暂存区某一文件的某一版本进行比较

六、分支的介绍和使用

1. 分支的介绍

在版本控制过程中,使用多条分支同时推进多个任务,如图:

在这里插入图片描述

分支的好处:

(1) 多个分支可以并发开发,互不影响,提高开发效率

(2) 如果某个分支的功能开发失败,直接删除这个分支即可,不会对其他任何分支产生影响

2. 操作分支

(1) 查看、创建、切换分支

i. 在工作区创建一个文件Test4.txt文件,内容是abc,对其执行add、commit指令

ii. 查看分支 (目前只有一条主分支master)
在这里插入图片描述

iii. 创建分支

在这里插入图片描述

iv. 切换分支

在这里插入图片描述

上图橙框显示,新增的分支会继承主分支之前的文件版本,并不是空白分支

(2) 解决分支的冲突问题

i. 进入branch01分支,对Test4.txt文件增加如下内容,并执行add、commit命令

在这里插入图片描述

ii. 将分支切换到master,查看分支情况,发现主分支内容并没有随branch01更改

在这里插入图片描述

此时打开Test4.txt文件发现只有abc三个字符,即没有新增内容

iii. 在主分支的前提下向Test4.txt中增加内容,并执行add、commit命令

在这里插入图片描述

此时主分支和branch01分支同一文件的内容出现了冲突

iv. 此时需要将branch01分支合并到主分支

v. 切换到主分支后执行git merge branch01

在这里插入图片描述

vi. 此时查看Test4.txt文件的内容

在这里插入图片描述

vii. 此时需要在此文件中进行删改,决定留下哪些内容,之后执行add命令

在这里插入图片描述

viii. 对此文件执行commit命令,解决冲突问题

在这里插入图片描述

七、团队内部协作过程模拟

  1. 职员A创建本地库,对工作区的Demo.txt文件执行add、commit命令

  2. A在GitHub创建远程库

(1) 创建远程库

在这里插入图片描述

(2) 录入信息

在这里插入图片描述

(3) 完成状态

在这里插入图片描述

(4) 远程库的地址较长,可以在本地为此地址起别名

i. 起别名

在这里插入图片描述

ii. 查看别名

在这里插入图片描述

  1. 将本地库的内容推送到远程库 (需要在弹出的窗口登陆GitHub的账号)

在这里插入图片描述

推送成功后在GitHub查看远程库:

在这里插入图片描述

  1. 职员B将A创建的远程库克隆到本地

在这里插入图片描述

克隆操作可以帮我们完成:

(1) 初始化本地库
(2) 将远程库的内容完整的克隆到本地
(3) 自动创建远程库的别名(origin)

  1. B创建了Demo3.txt文件,需要将其push到远程库,如果直接push,会出错

在这里插入图片描述

  1. 在GitHub登录A的账号,邀请B加入团队

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  1. 在GitHub登录职员B的账号,在浏览器的地址栏输入邀请链接,加入团队

在这里插入图片描述

  1. B再次将Demo3.txt文件push到远程库,成功

  2. A需要将远程库修改之后的内容下载到本地

在这里插入图片描述

注:还有一种更安全的方式 (fetch + merge)

(1) 对远程库执行fetch命令

在这里插入图片描述

抓取命令执行后,只是将远程库的内容下载到本地,但是工作区的内容并没有更新

(2) 正式更新工作区的内容之前,可以去远程库确认内容是否正确

在这里插入图片描述

(3) 确认无误后进行合并操作 (合并之前应该将分支切换回来)

在这里插入图片描述
在这里插入图片描述

  1. 协同开发时冲突的解决方法

(1) A向远程库push了文件Test.txt,B从远程库pull到本地,B修改Test.txt后push到远程库

(2) A修改Test.txt之后push到远程库,出现冲突

在这里插入图片描述

(3) 出现冲突的情况下,应先pull到本地,按照之前的方式对文件进行删改,再push到远程库

注意:解决冲突后的文件执行commit命令时不可以加文件名

八、跨团队协作过程模拟

  1. 公司A的职员A复制自己远程库的地址

在这里插入图片描述

  1. 公司B的职员B登陆自己的GitHub账号,在浏览器的地址栏输入A的远程库地址

  2. B点击图中的fork,将A的远程库复制到自己的远程库

在这里插入图片描述

  1. 点击之后出现

在这里插入图片描述

  1. B可以将远程库中的内容clone到本地,进行修改后push到远程库

  2. B登陆自己的GitHub,进入自己的远程库,点击

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. A登陆自己的GitHub账号进行审核

在这里插入图片描述

在这里插入图片描述

九、SSH免密登录

  1. 输入指令进入计算机用户的主目录
    在这里插入图片描述

  2. 执行命令生成一个.ssh目录

在这里插入图片描述

输入指令后连按三次回车使用默认值即可

  1. 创建出的.ssh目录下有两个文件
    在这里插入图片描述

  2. 打开.pub结尾的文件,复制其中的内容

  3. 登录GitHub账号

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  1. 对SSH远程地址起别名

在这里插入图片描述

使用SSH方式的好处:无需每次都进行身份验证

猜你喜欢

转载自blog.csdn.net/weixin_49343190/article/details/110451882