前后端交互(三)——Git 和 Github

目录

一.Git基础

1.版本管理 和 Git

2.Git 基本工作流程

3.Git 使用

二.Git进阶

1.分支

2.分支细分

3.分支命令

4.暂时保存更改

三.Github

1.多人协作开发流程

2.创建仓库

3.将本地仓库推送到远程仓库

4.拉取操作

5.解决冲突

6.跨团队协作

7.SSH免密登陆

8.Git忽略清单


一.Git基础

1.版本管理 和 Git

  • 版本管理:记录文件变化的方式,以便将来查阅 特定版本的 文件内容
  • 人为维护文档版本的问题:
  1. 数量多、命名不清晰,导致文档版本混乱
  2. 每次编辑文档需要复制,不方便
  3. 多人同时编辑同一个文档,易产生覆盖
  • Git:是一种 版本管理控制系统(VCS),将文档的状态作为 更新记录 保存起来,可在任何时间点 恢复更新记录

2.Git 基本工作流程

  • 工作流程图解:前后端交互(三)——Git 和 Github

3.Git 使用

3.1 使用前配置

 

  • 在使用 git 前,需要告诉 git 你是谁:
  • 配置提交人姓名:git config --global user.name 提交人姓名
  • 配置提交人姓名:git config --global user.email 提交人邮箱
  • 查看 Git配置信息:git config --list
  • git 初始化配置:前后端交互(三)——Git 和 Github
  • 如果要对配置信息进行修改,重复上述命令即可
  • 配置只需要执行一次

3.2 提交

  1. git init 初始化git仓库
  2. git status 查看文件状态
  3. git add 文件列表 追踪文件
  4. git commit -m 提交信息 向仓库中提交代码
  5. git log 查看提交记录
  • 初始化仓库、查看状态:前后端交互(三)——Git 和 Github
  • 添加到暂存区、追踪文件:前后端交互(三)——Git 和 Github
  • 添加提交信息,从暂存区到仓库:前后端交互(三)——Git 和 Github

3.3 撤销

  1. 用暂存区中的文件覆盖工作目录中的文件: git checkout 文件
  2. 将文件从暂存区中删除: git rm --cached 文件
  3. 将 git 仓库中指定的更新记录恢复出来,并且覆盖暂存区和工作目录:git reset --hard commitID
  • 用暂存区文件覆盖工作目录文件 :前后端交互(三)——Git 和 Github
  • 相当于撤回到某个时间点之前的版本:前后端交互(三)——Git 和 Github
  • git reset --hard commitID 详解:前后端交互(三)——Git 和 Github

​​

二.Git进阶

1.分支

  • 分支是 当前工作目录中 代码的一份副本
  • 使用分支,可以从开发主线上分离出来,以免影响开发主线
  • 前后端交互(三)——Git 和 Github

2.分支细分

  • 主分支(master):第一次向 git 仓库中提交更新记录时,自动产生的一个分支
  • 开发分支(develop):作为开发的分支,基于 master 分支创建
  • 功能分支(feature):作为开发具体功能的分支,基于开发分支创建
  • 功能分支 -> 开发分支 -> 主分支

3.分支命令

  1. git branch:查看分支
  2. git branch 分支名称:创建分支
  3. git checkout 分支名称:切换分支
  4. git merge:来源分支 合并分支
  5. git branch -d 分支名称:删除分支(分支被合并后才允许删除)(-D 强制删除)
  • 查看、创建、切换分支:前后端交互(三)——Git 和 Github
  • 切换分支的时候,暂存区的文件必须 commit提交:
  • 比如我现在在开发分支上,暂存区存在文件 A.html,我切换到了主分支,此时 A.html就会跟着到主分支的 项目文件中展示,而不是待在开发分支的 项目文件中展示;此时切回开发分支,对 A.html文件进行 commit 提交,再切换到主分支,A.html 就不会跟随来到主分支,而是待在开发分支
  • 合并分支,合并到谁就先切换到谁,再合并:前后端交互(三)——Git 和 Github
  • 合并后才能删除(未合并强删-D):前后端交互(三)——Git 和 Github

4.暂时保存更改

  • 在git中,可以暂时提取分支上所有的改动并存储,得到一个干净的工作副本,转向其他工作
  • 使用场景:分支临时切换,比如老板让你修改主分支bug,你还在开发分支开发新功能,此时可以利用 剪切,保存当前开发分支的修改,然后切换到主分支进行bug修改,修改完成后,切回开发分支,进行粘贴,恢复之前的操作
  1. 存储临时改动(剪切):git stash
  2. 恢复改动(粘贴):git stash pop
  • 恢复改动的命令也可以在别的分支上进行,比如剪切开发分支1,在开发分支2进行粘贴,这是可以的

三.Github

1.多人协作开发流程

  • A在自己的计算机中 创建本地仓库
  • A在 github中创建 远程仓库
  • A将本地仓库 推送到远程仓库
  • B克隆远程仓库到本地 进行开发
  • B将本地仓库中开发的内容 推送到远程仓库
  • A将远程仓库中的 最新内容 拉去到本地
  • 前后端交互(三)——Git 和 Github

2.创建仓库

  • 填写仓库基本信息:前后端交互(三)——Git 和 Github
  • 跳转到:前后端交互(三)——Git 和 Github

3.将本地仓库推送到远程仓库

  1. git push 远程仓库地址/别名 分支名称
  2. git push -u 远程仓库地址别名 分支名称
  3. -u 记住推送地址及分支,下次推送只需要输入git push即可
  4. git remote add 远程仓库地址别名 远程仓库地址(这是给远程仓库地址起别名的命令)
  • 前后端交互(三)——Git 和 Github
  • 写入时要进行身份验证,只需输入一次Github账号密码,电脑会自动在此处存储账号密码:
  • 前后端交互(三)——Git 和 Github

4.拉取操作

  • 克隆远端数据仓库到本地:git clone 仓库地址
  • 克隆仓库:前后端交互(三)——Git 和 Github
  • B程序员需要A程序员进行远程仓库的设置 赋予权限,才能够将自己更新的项目上传到A的远程仓库:
  • 前后端交互(三)——Git 和 Github
  • A将上图中的邀请链接发送给B,B需要登录Github,并在其中跳转到邀请链接,接受邀请,才能进行本地推送
  • 进行克隆操作的时候,远程仓库地址的别名也会被一起复制,所以B也可以用A的远程仓库地址别名进行git push
  • 拉取远程仓库中最新的版本:git pull 远程仓库地址 分支名称
  • 如果本地仓库的版本低于远程仓库版本,那就无法进行push,必须先pull/clone更新到最新版本,然后再push自己更新的内容
  • 区分:
  1. git pull:是存在本地仓库的情况下,将远程仓库的最新版本拉取到本地
  2. git clone:是不存在本地仓库的情况下,将远程仓库全部克隆到本地

5.解决冲突

  • 在多人同时开发一个项目时,如果两个人修改了同一个文件的同一个地方,就会发生冲突,需要人为解决
  • 前后端交互(三)——Git 和 Github
  • 上述可以理解为:AB同时修改了某个文件的某个部分,A先对远程仓库提交了,B提交就会报错,此时B可以去审视自己修改的部分和A冲突的部分,人工选择保留的部分,修改完成后进行上传

6.跨团队协作

  • 如果 AB是团队合作,C只是个路人,想修改 AB代码,却没有权限,此时可以采用下面方法:
  1. 程序员 C fork仓库(相当于复制A远程仓库到自己的远程仓库)
  2. 程序员 C 将仓库 克隆clone 在本地进行修改
  3. 程序员 C 将仓库 推送push 到远程
  4. 程序员 C 发起pull reqest(向A提交自己的修改)
  5. 原仓库作者审核
  6. 原仓库作者合并代码
  • C fork仓库:前后端交互(三)——Git 和 Github
  • C把修改后的推给A:前后端交互(三)——Git 和 Github
  • 前后端交互(三)——Git 和 Github
  • 前后端交互(三)——Git 和 Github
  • A收到了C的提交并对话:前后端交互(三)——Git 和 Github
  • A审核通过,合并了C代码:前后端交互(三)——Git 和 Github

7.SSH免密登陆

  • https协议仓库地址:https://github.com/itcast-frontEnd/git-demo.git
  • 不想频繁的输入 Github账号密码 的解决方式,利用SSH免密登陆
  • 生成秘钥:ssh-******
  • 秘钥存储目录:C:\ Users\ 当前用户\ .ssh
  • 公钥名称:id_rsa.pub
  • 私钥名称:id_rsa
  • 前后端交互(三)——Git 和 Github
  • Github会自动 用公钥与电脑中的私钥进行配对,如果配对成功,则推送成功,反之则不
  • 给Github添加公钥:
  • 前后端交互(三)——Git 和 Github
  • 打开仓库,复制SSH地址:前后端交互(三)——Git 和 Github
  • 推送操作和之前完全相同,不同的是将地址改成了 SSH地址,这样就不用输入账号密码了
  • 前后端交互(三)——Git 和 Github

8.Git忽略清单

  • 在执行 Git命令的时候,不想管理的文件,比如测试文件、第三方包等等
  • 将不需要被 Git管理的文件名字添加到 .gitignore文件,Git就不会将他们添加到 暂存文件库
  • git忽略清单文件  .gitignore:前后端交互(三)——Git 和 Github
  • 将工作目录中的文件 全部添加 到暂存区:git add .
  • 可以在项目目录中新建 README.md文件,对自己的仓库做出说明,这个文件内容会自动展示在远程仓库中