day19Git

1.Git介绍

1.1版本控制(理解)

无论是代码编写,还是文档编写,我们都会遇到对文档内容反复修改的情况
在这里插入图片描述

1.2开发中存在的问题(理解)

  • 程序员小明负责的模块就要完成了,就在即将提交发布之前的一瞬间,电脑突然蓝屏,硬盘光荣下岗!

几个月来的努力付之东流
在这里插入图片描述

  • 老王需要在项目中加入一个很复杂的功能,一边尝试,一边修改代码,就这样摸索了一个星期。
    可是这被改得面目全非的代码已经回不到从前了。
    在这里插入图片描述

  • 小明和老王先后从文件服务器上下载了同一个文件
    在这里插入图片描述

  • 因项目中Bug过多,导致项目进度拖延,项目经理老徐因此被骂,但不清楚Bug是手下哪一个程序员写的
    在这里插入图片描述

  • 开发中要解决的问题

    • 代码备份
    • 版本控制
    • 协同工作
    • 责任追溯

CVS,VSS,SVN,GIT

1.3SVN版本控制(理解)

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而开发人员工作的时候,用的都是自己的电脑,
所以首先要从中央服务器下载最新的版本,然后开发,开发完后,需要把自己开发的代码提交到中央服务器。

  • 服务器单点故障

    将会导致所有人员无法工作

  • 而服务器硬盘损坏

    这意味着,你可能失去了该项目的所有历史记录,这是毁灭性的。
    在这里插入图片描述

1.4Git版本控制(理解)

Git是一个分布式的版本控制工具。

Git是在2005年,Linux系统的创建者Linus Torvalds,为了帮助全球的开发者,维护Linux系统内核的开发
而开发了自己的开源分布式版本控制工具,分为两种类型的仓库:本地仓库和远程仓库。

  • 每一个客户端都保存了完整的历史记录

    服务器的故障,都可以通过客户端的记录得以恢复。
    在这里插入图片描述

2.Git下载和安装

2.1Git的下载(应用)

官网下载地址:https://git-scm.com/downloads
在这里插入图片描述

2.2Git的安装(应用)

  1. 双击安装包,进入安装向导界面
    在这里插入图片描述

  2. 指定安装目录
    在这里插入图片描述

  3. 一路next下一步
    在这里插入图片描述

  4. 等待安装
    在这里插入图片描述

  5. 安装完成
    在这里插入图片描述

  6. 安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到如下两个菜单则说明Git安装成功。
    在这里插入图片描述

  7. 运行Git命令客户端,使用git --version 命令,可以查看git版本
    在这里插入图片描述

2.3TortoiseGit的安装(应用)

  1. 双击安装包,进入安装向导界面
    在这里插入图片描述

  2. 一路next下一步
    在这里插入图片描述

  3. 指定安装目录
    在这里插入图片描述

  4. 安装
    在这里插入图片描述

  5. 配置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. 安装TortoiseGit中文语言包,一路next即可
    在这里插入图片描述

  2. 配置TortoiseGit中文语言
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.Git操作入门

3.1Git基本工作流程(理解)

本地仓库
在这里插入图片描述

3.2Git命令行操作(应用)

  • git常用命令

    命令作用
    git init初始化,创建 git 仓库
    git status查看 git 状态 (文件是否进行了添加、提交操作)
    git add 文件名添加,将指定文件添加到暂存区
    git commit -m ‘提交信息’提交,将暂存区文件提交到历史仓库
    git log查看日志( git 提交的历史日志)
    git reset HEAD撤销git add操作 将file退回到unstage区
  • 操作步骤

    1. 创建工作目录、初始化本地 git 仓库
      在这里插入图片描述

    2. 新建一个 test.txt 文件(暂不执行添加操作)

    3. 使用 status 命令,查看状态
      在这里插入图片描述

    4. 使用 add 命令添加,并查看状态
      在这里插入图片描述

    5. 使用 commit 命令,提交到本地历史仓库
      在这里插入图片描述

    6. 使用 log 命令,查看日志
      在这里插入图片描述

    7. 修改 test.txt 文件
      在这里插入图片描述

    8. 添加并提交,查看日志
      在这里插入图片描述

3.3Git图形化工具操作(理解)

  1. 创建工作目录、初始化本地 git 仓库
    在这里插入图片描述
    在这里插入图片描述

  2. 新建一个 test.txt 文件(暂不执行添加操作)

  3. 选中文件右键,选择TortoiseGit,之后选择添加
    在这里插入图片描述

  4. 空白处右键,Git提交,提交到本地历史仓库
    在这里插入图片描述

  5. 空白处右键,TortoiseGit,显示日志,可以产看日志信息
    在这里插入图片描述

  6. 修改 test.txt 文件

  7. 添加并提交,查看日志

纯版本库和非纯版本库的区别:

纯版本库不预留工作区:版本库的相关目录直接建在当前文件夹中
非纯版本库预留工作区:版本库的相关目录建在.git目录中

4.Git版本管理

4.1历史版本切换(理解)

在这里插入图片描述

  • 准备动作

    1. 查看 my_project 的 log 日志
      git reflog :可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录的操作)
    2. 增加一次新的修改记录
  • 需求: 将代码切换到第二次修改的版本

    指令:git reset --hard 版本唯一索引值

4.2分支管理介绍(理解)

  • 分支

    • 由每次提交的代码,串成的一条时间线
    • 使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线
  • 分支的使用场景

    1. 周期较长的模块开发
      假设你准备开发一个新功能,但是需要一个月才能完成
      第一周写了20%的代码,突然发现原来已经写好的功能出现了一个严重的Bug
      那现在就需要放下手中的新功能,去修复Bug
      但这20%的代码不能舍弃,并且也担心丢失,这就需要开启一个新的版本控制。
    2. 尝试性的模块开发
      业务人员给我们提出了一个需求,经过我们的思考和分析
      该需求应该可以使用技术手段进行实现。
      但是我们还不敢确定,我们就可以去创建一个分支基于分支进行尝试性开发。
  • 分支工作流程

    • Master: 指向提交的代码版本

    • Header: 指向当前所使用的的分支
      在这里插入图片描述

4.3分支管理操作(应用)

  • 创建和切换

    创建命令:git branch 分支名
    切换命令:git checkout 分支名

    注意:在哪个版本的主线上创建的分支,此版本之前的资源是共享的,之后的资源是并行隔离的
    

    git branch直接查看现在所有的分支,其中用*标识的就是现在head指针指向的分支,也就是当前所使用 的分支。

  • 新分支添加文件

    查看文件命令:ls

    总结:不同分支之间的关系是平行的关系,不会相互影响

  • 合并分支

    合并命令:git merge 分支名

    说明:
    一般建议master主分支合并其它分支,也可以通过其它分支合并主分支master
    1,  首先切换到master分支
    2,使用git merge newmaster
    相反:如果是将master合并到其它分支,刚应先切换到其它分支,再执行merge命令合并主分支。
    
  • 删除分支

    删除命令:git branch -d 分支名

  • 查看分支列表

    查看命令:git branch

5.远程仓库

5.1远程仓库工作流程(理解)

在这里插入图片描述

5.2远程仓库平台介绍(理解)

  • GitHub

    域名:https://github.com
    介绍:GitHub是全球最大的开源项目托管平台,俗称大型程序员社区化交友网站

    ​ 各类好玩有趣的开源项目,只有想不到,没有找不到。

  • 码云

    域名:https://gitee.com
    介绍:码云是全国最大的开源项目托管平台,良心平台,速度快,提供免费私有库

5.3码云的注册(应用)

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

5.4先有本地项目,远程为空(应用)

  • 步骤

    1. 创建本地仓库
    2. 创建或修改文件,添加(add)文件到暂存区,提交(commit)到本地仓库
    3. 创建远程仓库
    4. 推送到远程仓库
  • 创建远程仓库
    在这里插入图片描述
    在这里插入图片描述

SSH非对称加密:

1,加密解密:密钥对进行加密解密

​ 可以使用公钥加密,私钥解密:传输加密报文过程中是不需要携带解密的钥匙。

​ 可以使用私钥加密,公钥解密:传输加密报文过程中是不需要携带解密的钥匙。

2,认证

​ 通过对传输报文信息的摘要进行签名:接受方如果使用公钥能进行解密,说明密钥对配对成功,认证通过。

1. 对称加密

对称加密指的就是加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥。

常见的对称加密算法:DES,AES,3DES等等。 

2. 非对称加密

非对称加密指的是:加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。

常见的非对称加密算法:RSA,ECC


3. 区别

对称加密算法相比非对称加密算法来说,加解密的效率要高得多。但是缺陷在于对于秘钥的管理上,以及在非安全信道中通讯时,密钥交换的安全性不能保障。所以在实际的网络环境中,会将两者混合使用.


例如针对C/S模型,

1. 服务端计算出一对秘钥pub/pri。将私钥保密,将公钥公开。

2. 客户端请求服务端时,拿到服务端的公钥pub。

3. 客户端通过AES计算出一个对称加密的秘钥X。 然后使用pub将X进行加密。

4. 客户端将加密后的密文发送给服务端。服务端通过pri解密获得X。

5. 然后两边的通讯内容就通过对称密钥X以对称加密算法来加解密。

对称加密和非对称加密的区别
1对称加密:加密解密用同一个密钥,被黑客拦截不安全

 

2非对称加密:公钥加密,私钥解密;公钥可以公开给别人进行加密,私钥永远在自己手里,非常安全,黑客拦截也没用,因为私钥未公开。著名的RSA加密算法用的就是非对称加密。

举例:
在这里插入图片描述

第一步:ipB先给A发送B公钥,ipA用B公钥加密A公钥发送给ipB,ipB拿到后,用B私钥去取里面内容,ipB拿到A公钥。

第二步:双方通信用对方公钥直接加密后发送。接收方用自己的私钥去解密。
  • 生成SSH公钥

    • 推送代码之前,需要先配置SSH公钥
      在这里插入图片描述

    • 生成SSH公钥步骤

      1. 设置Git账户

        • git config user.name(查看git账户)
        • git config user.email(查看git邮箱)
        • git config --global user.name “账户名”(设置全局账户名)
        • git config --global user.email “邮箱”(设置全局邮箱)
        • cd ~/.ssh(查看是否生成过SSH公钥)
          在这里插入图片描述
      2. 生成SSH公钥

        • 生成命令: ssh-keygen -t rsa -C ‘邮箱’ ( 注意:这里需要敲3次回车)
          在这里插入图片描述

        • 查看命令: cat ~/.ssh/id_rsa.pub
          在这里插入图片描述

      具体生成的文件:
      在这里插入图片描述

      id_rsa:私钥

      id_rsa.pub:公钥

      3.设置账户公钥
      在这里插入图片描述
      在这里插入图片描述

      1. 公钥测试

        • 命令: ssh -T git@gitee.com
          在这里插入图片描述
  • 推送到远程仓库

  • 步骤

    1. 为远程仓库的URL(网址),自定义仓库名称
    2. 推送
  • 命令
    git remote add 远程别名 远程仓库URL: 由于远程仓库地址太长,可以使用此命令起一个别名

  • git push -u 远程别名 分支名
    在这里插入图片描述
    在这里插入图片描述

测试用:SSH地址 git@gitee.com:zhangyatao666/gittest.git

如果执行git remote add时提示如下错误:
fatal: Not a git repository (or any of the parent directories): .git

切换到有.git目录的工作区执行命令

如果出现如下错误:说明 远程分支存在本地分支不存在的提交 (代码冲突 见下面讲解)

$ git push -u origin master
To git@github.com:qzmly100/repository-.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:qzmly100/repository-.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

可以使用强制覆盖:git push origin1 master -f

或者先拉取远程仓库到本地,再提交。

5.5先有远程仓库,本地为空(应用)

  • 步骤
    1. 将远程仓库的代码,克隆到本地仓库
      克隆命令:git clone 仓库地址
    2. 创建新文件,添加并提交到本地仓库
    3. 推送至远程仓库
    4. 项目拉取更新
      拉取命令:git pull 远程仓库名 分支名

5.6代码冲突(应用)

  • 产生原因:

    两个程序员操作同一个文件,其中一个程序员在修改文件后,push到远程仓库,另一个程序员应该先pull将最新的代码更新到本地仓库后,在修改代码之后push到远程仓库,结果他没有先pull将最新的代码更新到本地仓库,而是直接将自己的代码push到远程仓库,这样就可能会导致代码冲突
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 如何解决冲突

    <<<<<<<和>>>>>>>中间的内容,就是冲突部分

    1. 修改冲突行,保存,即可解决冲突。
    2. 重新add冲突文件并commit到本地仓库,重新push到远程

6.IDEA集成Git

6.1IDEA中配置Git(应用)

  1. File -> Settings
    在这里插入图片描述

  2. Version Control -> Git -> 指定git.exe存放目录
    在这里插入图片描述

  3. 点击Test测试
    在这里插入图片描述

6.2创建本地仓库(应用)

  1. VCS->Import into Version Control->Create Git Repository
    在这里插入图片描述

  2. 选择工程所在的目录,这样就创建好本地仓库了
    在这里插入图片描述

  3. 点击git后边的对勾,将当前项目代码提交到本地仓库

    注意: 项目中的配置文件不需要提交到本地仓库中,提交时,忽略掉即可
    在这里插入图片描述

6.3版本切换(应用)

  • 方式一: 控制台Version Control->Log->Reset Current Branch…->Reset

    (选中指定版本,右键Reset Current Branch )

    这种切换的特点是会抛弃原来的提交记录
    在这里插入图片描述

  • 方式二:控制台Version Control->Log->Revert Commit->Merge->处理代码->commit

    这种切换的特点是会当成一个新的提交记录,之前的提交记录也都保留
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

说明:选择Revert 时

以下这两个主要提交文件到远程仓库时发生冲突用的:

Accept Yours 就是直接选取本地的代码,覆盖掉远程仓库的

Accept Theirs 是直接选取远程仓库的,覆盖掉自己本地的

我们选择Merge,自己手动行进选择、修改。

可以自己演示测试:
IDEA打开项目A:修改某一个类后提交到远程仓库
IDEA打开另一个目录的项目A(从远程clone过来的):修改同一个类后提交到远程仓库,会出现冲突提示,这时可以选择Accipt Theirs(表示用远程的覆盖本地的)  Accept Yours(表示使用本地的)

6.4分支管理(应用)

  • 创建分支

    VCS->Git->Branches->New Branch->给分支起名字->ok
    在这里插入图片描述

  • 切换分支

    idea右下角Git->选择要切换的分支->checkout
    在这里插入图片描述

  • 合并分支

    VCS->Git->Merge changes->选择要合并的分支->merge
    在这里插入图片描述

    处理分支中的代码
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 删除分支

    idea右下角->选中要删除的分支->Delete
    在这里插入图片描述

6.5本地仓库推送到远程仓库(应用)

  1. VCS->Git->Push->点击master Define remote
    在这里插入图片描述
  2. 将远程仓库的路径复制过来->Push
    在这里插入图片描述

6.6远程仓库克隆到本地仓库(应用)

File->Close Project->Checkout from Version Control->Git->指定远程仓库的路径->指定本地存放的路径->clone
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

InLoadwetrust

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

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

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

打赏作者

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

抵扣说明:

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

余额充值