Git 和 Github 基本概念及操作

目录

一. 版本管理 和 Git

1. 版本管理

1.1 什么是版本管理

1.2 什么是 Git

1.3 Git 基本工作流程图解

2. Git 基本使用

2.1 使用前配置

2.2 提交流程

2.3 撤销提交

3. Git 分支

3.1 什么是分支

3.2 分支种类(功能分支 -> 开发分支 -> 主分支)

3.3 分支命令

3.4 暂存更改

二. Gitlab 和 Github

1. 多人协作开发流程

2. 多人协作开发实践

2.1 创建仓库

2.2 将本地仓库推送到远程仓库

2.3 克隆远程仓库

2.4 拉取远程仓库最新代码

2.5 解决冲突

3. 跨团队协作

4. SSH免密登陆

5. Git忽略清单


一. 版本管理 和 Git

1. 版本管理

1.1 什么是版本管理

版本管理:记录文件变化的方式,以便将来查阅 特定版本的 文件内容

人工维护文档版本的问题:

  • 数量多、命名不清晰,导致文档版本混乱
  • 每次编辑文档需要复制,不方便
  • 多人同时编辑同一个文档,易产生覆盖

1.2 什么是 Git

Git:是一种 版本管理控制系统(VCS),将文档的状态作为 更新记录 保存起来,可在任何时间点 恢复更新记录

1.3 Git 基本工作流程图解

2. Git 基本使用

2.1 使用前配置

在使用 git 前,需要告诉 git 你是谁,执行下方三条命令:

  • PS:如果要对配置信息进行修改,重复命令即可
  • PPS:配置只需要执行一次
// 配置提交人姓名
git config --global user.name

// 配置提交人邮箱
git config --global user.email

// 查看 Git 配置信息
git config --list

2.2 提交流程

// 初始化git仓库
git init

// 查看文件状态
git status

// 添加文件至文件列表 追踪文件
git add .

// 提交信息 向仓库中提交代码
git commit -m "feat: xxxx"

// 查看提交日志
git log

初始化仓库、查看状态

添加到暂存区、追踪文件

添加提交信息,从暂存区到仓库

2.3 撤销提交

// 用暂存区中的文件,覆盖工作目录中的文件
git checkout 文件名

// 将文件从暂存区中删除
git rm --cached 文件名

// 将 git 仓库中指定的更新记录恢复出来,并且覆盖暂存区和工作目录
git reset --hard commitID

用暂存区文件覆盖工作目录文件 

相当于撤回到某个时间点之前的版本

※※※※※※      关于 git reset --hard commitID      ※※※※※※

​​

3. Git 分支

3.1 什么是分支

分支:当前工作目录中的代码的一份副本

使用分支,可以将部分功能开发,从开发主线上分离出来,以免影响主线已有的正常功能

3.2 分支种类(功能分支 -> 开发分支 -> 主分支)

主分支(master/main):第一次向 git 仓库中提交更新记录时,自动产生的一个分支

开发分支(develop):作为开发的分支,基于 master/main 分支创建

功能分支(feature):作为开发具体功能的分支,基于 develop 分支创建

3.3 分支命令

// 查看分支
git branch

// 创建分支
git branch 分支名称

// 切换分支
git checkout 分支名称

// 合并分支
git merge 分支名称

// 删除分支(分支被合并后才允许删除)(-D 强制删除)
git branch -d 分支名称

查看、创建、切换分支

切换分支的时候,暂存区的文件必须提交(commit )

举个栗子:比如我现在在开发分支上,暂存区存在文件 A.html,我切换到了主分支,此时 A.html就会跟着到主分支的 项目文件中展示,而不是待在开发分支的 项目文件中展示;此时切回开发分支,对 A.html 文件进行提交(commit),再切换到主分支,A.html 就不会跟随来到主分支,而是待在开发分支

合并分支,合并到谁就先切换到谁,再合并

合并后才能删除(未合并强删-D)

3.4 暂存更改

可以暂时提取分支上所有的改动并存储,得到一个干净的工作副本,转向其他工作

举个栗子:分支临时切换,比如老板让你修改主分支bug,你还在开发分支开发新功能,此时可以利用 剪切,保存当前开发分支的修改,然后切换到主分支进行bug修改,修改完成后,切回开发分支,进行粘贴,恢复之前的操作

// 存储临时改动(剪切)
git stash

// 恢复改动(粘贴)
git stash pop

恢复改动的命令也可以在别的分支上进行

举个栗子:比如剪切开发分支1,在开发分支2进行粘贴,这是可以的

二. Gitlab 和 Github

这两个相当于线上仓库(远程仓库):Gitlab 是企业仓库,Github 是私人仓库

下面以 Github 为例,进行说明

1. 多人协作开发流程

  • A在自己的计算机中 创建本地仓库
  • A在 github 中创建 远程仓库
  • A将本地仓库 推送到远程仓库
  • B克隆远程仓库到本地 进行开发
  • B将本地仓库中开发的内容 推送到远程仓库
  • A将远程仓库中的 最新内容 拉取到本地

 

2. 多人协作开发实践

2.1 创建仓库

填写仓库基本信息:

填写完成后,会跳转到下面的页面:

 

2.2 将本地仓库推送到远程仓库

// 给远程仓库推送代码
git push 远程仓库地址/别名 分支名称

// 给远程仓库推送代码(-u 记住推送地址及分支,下次推送只需要输入 git push 即可)
git push -u 远程仓库地址别名 分支名称

// 给远程仓库地址起别名
git remote add 远程仓库地址别名 远程仓库地址

给远程仓库推送代码

 

写入时要进行身份验证,只需输入一次Github账号密码,电脑会自动在此处存储账号密码:

2.3 克隆远程仓库

// 克隆远端数据仓库到本地
git clone 仓库地址

获取远程仓库地址,克隆远程仓库到本地:

B程序员需要A程序员 赋予权限,才能够将自己更新的代码上传到A的远程仓库:

  • PS:A将上图中的邀请链接发送给B,B需要登录Github,并在其中跳转到邀请链接,接受邀请,才能进行本地推送

  • PPS:进行克隆操作的时候,远程仓库地址的别名也会被一起复制,所以B也可以用A的远程仓库地址别名进行 git push

2.4 拉取远程仓库最新代码

// 拉取远程仓库中最新的版本
git pull 远程仓库地址 分支名称

如果本地仓库的版本低于远程仓库版本,那就无法进行 push,必须先 pull/clone 到最新版本,再 push 自己更新的内容

关于 pull 和 clone:

  • git pull:是存在本地仓库的情况下,将远程仓库的最新版本拉取到本地
  • git clone:是不存在本地仓库的情况下,将远程仓库全部克隆到本地

2.5 解决冲突

在多人同时开发一个项目时,如果两个人修改了同一个文件的同一个地方,就会发生冲突,需要人工手动解决

举个栗子:上述可以理解为:AB同时修改了某个文件的某个部分,A先对远程仓库提交了,B提交就会报错,此时B可以去审视自己修改的部分和A冲突的部分,人工选择保留的部分,修改完成后进行上传

3. 跨团队协作

如果 AB是团队合作,C只是个路人,想修改 AB代码,却没有权限,此时可以采用下面方法:

  • 程序员 C fork仓库(相当于复制A远程仓库到自己的远程仓库)
  • 程序员 C 将仓库 克隆clone 在本地进行修改
  • 程序员 C 将仓库 推送push 到远程
  • 程序员 C 发起pull reqest(向A提交自己的修改)
  • 原仓库作者审核
  • 原仓库作者合并代码

C fork仓库:

C把修改后的推给A:

A收到了C的提交并对话:

A审核通过,合并了C代码:

4. SSH免密登陆

https协议仓库地址:GitHub - itcast-frontEnd/git-demo

不想频繁的输入 Github账号密码 的解决方式 —— 利用SSH免密登陆

// 生成秘钥
ssh-keygen

// 秘钥存储目录
C:\ Users\ 当前用户\ .ssh

// 公钥名称
id_rsa.pub

// 私钥名称
id_rsa

Github会自动 用公钥与电脑中的私钥进行配对,如果配对成功,则推送成功,反之则不

给 Github 添加公钥:

 

打开仓库,复制SSH地址:

推送操作和之前完全相同,不同的是将地址改成了 SSH地址,这样就不用输入账号密码了

5. Git忽略清单

在执行 Git命令的时候,不想管理的文件,比如测试文件、第三方包(node_modules)等等 

将不需要被 Git管理的文件名字添加到 .gitignore文件,Git就不会将他们添加到 暂存文件库

git忽略清单文件  .gitignore:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyrelion

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值