day06-Git与GitHub

  • 时间:
  • 浏览:
  • 来源:互联网

day06-Git与GitHub

学习目标

		Git使用
        Git版本控制
        Git的IDEA练习

在这里插入图片描述

Git的重要性

  • 当前世界上最先进的分布式版本管理软件
  • -Git–大型项目经验

版本控制功能

- 1:备份与还原
在这里插入图片描述
在这里插入图片描述
每开发一个功能产生一个副本,需要哪个状态的直接调出来用
一次copy就是一次备份,

2:比较
比较compare diff
比较两份数据的不同
1:整体比较 hash值
hash值就是 调用一个算法(摘要算法,md5,sha-1…),得到一个特征码
同一份数据,是否发生修改,只要看特征码
2:逐行比较
在这里插入图片描述
Hash工具,
在这里插入图片描述
随意选个算法,两个文件一样,hash值一样,很高的效率比较两个文件是否一样
在这里插入图片描述
hash为整体比较,能比较出一不一样,但不能比较出哪里不一样,是整体比较

逐行比较可以比较出哪里不一样,compare软件
在这里插入图片描述
在这里插入图片描述
3:分支:地位相同
在这里插入图片描述
4:合并
合并分支:统一代码
在这里插入图片描述
本质是其他分支往主分支上和,和的话没有发现冲突会自动处理,发生冲突就是相同位置都被改了,要根据实际代码情况进行判断怎么合并,不能简单覆盖

Git概述

什么是Git
Git是目前世界上最先进的分布式版本控制系统。
Git是免费、开源的
最初Git是为辅助 Linux 内核开发的,来替代 BitKeeper
作者
Linux和Git之父李纳斯·托沃兹(Linus Benedic Torvalds)1969、芬兰
官网
官网: https://git-scm.com/
源码:https://github.com/git/git/

Git分布式

集中式与分布式

》》本地版本控制
只有个人可以使用,无法形成团体开发
在这里插入图片描述

》》集中版本控制
团队使用,数据在服务器,不可以离线工作,对网络有高要求
在这里插入图片描述

》》分布式版本控制
团队使用,数据在每个用户本地,可离线工作,网络不通时可往本地提交,网络顺畅时可往服务端提交,服务器没那么大的压力
在这里插入图片描述

》》Git与SVN最主要区别
1:SVN是集中式版本控制系统
2:Git是分布式版本控制系统

Git优点

》》Git优点:分布式
高效(团队,分支)
离线工作,服务器压力小
易于合并
在这里插入图片描述

》》缺点:入门容易精通难
资料少(起码中文资料很少)。
学习周期相对而言比较长。
不符合常规思维

Git软件安装

Git和TortoiseGit安装:傻瓜式安装
》》下载:
https://git-scm.com/
》》安装
Git-2.26.2-64-bit.exe
》》启动
在这里插入图片描述
Git配置: git config
》》设置用户名与邮箱(用户标识,必要)就是在git中设置当前使用的用户是谁
每一次备份都会把当前备份者的信息存储起来
命令:
配置用户名:git config --global user.name “xiaoming”
配置邮箱: git config --global user.email “xm@sina.com”
》》级别
–local 项目级
–global 当前用户级
–system 系统级
在这里插入图片描述
设置和修改一样,直接设置值
在这里插入图片描述
设置后创建项目,进行代码提交,目录里会写上设置的两个信息

Git建本地仓库git clone / git init

  • 在当前目录新建一个Git代码库
    $ git init

  • 新建一个目录,将其初始化为Git代码库
    $ git init [project-name]

  • 下载一个项目和它的整个代码历史
    $ git clone [url]

初始化本地仓库
在这里插入图片描述
在这里插入图片描述
相当于一个版本的数据库,将来的操作是由这个目录管理起来的

三个指令
在这里插入图片描述

Git使用流程

》》工作区:写代码
》》暂存区:多个文件作为一次提交(原子性)
》》本地库:你提交的所有版本的数据
》》远程库:远程仓库,托管代码的服务器
git的工作流程一般是这样的:
1、在工作目录中添加、修改文件;
2、将文件放入暂存区域;git add
3、将暂存区域的文件提交到git仓库。git commit ,git log/reflog

Git仓库四个区
在这里插入图片描述
暂存区将文件集中到一块一起提交给本地库,提交后清空
在这里插入图片描述
在这里插入图片描述
e.g:
在这里插入图片描述

e.ge:
增加三个文件
将三个文件加到暂存区

- 添加指定文件到暂存区
$ git add [file1] [file2] …

  • 添加指定目录到暂存区,包括子目录
    $ git add [dir]
  • 添加当前目录的所有文件到暂存区
    $ git add .
  • 添加每个变化前,都会要求确认
  • 对于同一个文件的多处变化,可以实现分次提交
    $ git add -p
    在这里插入图片描述
    再将文件加到本地库里
    在这里插入图片描述
    默认暂存区里所有文件都加入本地库,然后情况,可以设置

若是记不得加入暂存区命令,可用图形化工具
在这里插入图片描述
点击Diff,显示i新加的文件
在这里插入图片描述
在这里插入图片描述

右键add
在这里插入图片描述
加到暂存区了,点击OK
若是点击提交没有文件可选择,说明文件没有改变
在这里插入图片描述
改变了未提交的文件红色,提交后变为绿色

用图形化工具加到本地库

在这里插入图片描述
默认分支是主分支
在这里插入图片描述
填写注释,以后好找,勾选文件,然后点击commit
提交本地库后询问要不要提交远程库
在这里插入图片描述
Git仓库reflog指令status指令
status指令:
在这里插入图片描述
显示文件是否经过改变,但不能知道改了哪里
若是想知道修改过哪里,可以用diff’指令
在这里插入图片描述
也可图形化工具查看
在这里插入图片描述
在这里插入图片描述
上图一行一行的比较

log/reflog指令:查看提交了对少次
为什么要查看提交了多少次?
----->其实是查看有多少个版本,软件可以做备份的,每一次提交都会产生一个新的副本,所以log/reflog可以查看有多少个副本

用图形化工具查看副本
在这里插入图片描述
在这里插入图片描述
点击reflog
在这里插入图片描述
reflog比flog更加强大,更加突出重点
flog更加细致
在这里插入图片描述
一般用reglog
用cmd查看副本
在这里插入图片描述
flog和reglog用cmd也有区别,注意:每一个版本都会多加一个设置的user.name和email

show指令
在这里插入图片描述

reset指令还原
工作区本地文件丢失或者bug搞不定了,可以拿仓库里的文件回来覆盖工作区
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
选择hard重置,选择show reflog也行,更强大,推荐这个,选择hard可以将代码恢复到暂存区和工作区

》》git status 命令
显示工作目录和暂存区的状态,只到文件
》》git log 命令
项目历史的信息
》》git log --stat 查看简要统计
》》git show sha1或者head标记
看某个具体的 commit 的改动内容
》》git diff 命令
显示工作目录和暂存区的状态,细到内容
》》git diff HEAD 命令
显示工作目录和上一次的状态,细到内容

在这里插入图片描述
仓库branch指令switch指令
在这里插入图片描述
master为主分支,创建一个分支dev1(即产生一个master的副本)在这里插入图片描述在这里插入图片描述
在这里插入图片描述
合并分支

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

在这里插入图片描述
需要先将箭头移到主分支,才能将dev1移到主分支

将dev1的文件进行修改,与主分支合并,合并过去了,可以在主分支上看见修改,主分支也被修改

在这里插入图片描述
以上均为本地操作。

远程操作

Git远程仓库
托管平台
在这里插入图片描述
push上传代码,pull下载代码
平台:码云
在这里插入图片描述
共有的不需要账号密码也能访问,私有的需要账号密码
在这里插入图片描述
创建仓库后默认主分支
创建后有两个协议
在这里插入图片描述

用账号密码不太合适(要么需要多次输入,要么可能账号密码被截获),一般用SSH免密登录

Git远程仓库ssh免密登录

在这里插入图片描述
原理:
公钥私钥都是字符串,分别用来加密和解密的,保存私钥就行
在这里插入图片描述

在这里插入图片描述
1111111111111111111

产生账号密钥
1:使用指令产生一对公钥密钥
在这里插入图片描述
原来已经有了一个账号密钥
重新产生一个
在这里插入图片描述
在这里插入图片描述
产生了一对公钥和密钥
2:查看文件
在这里插入图片描述
在这里插入图片描述

3:复制公钥到服务器
在这里插入图片描述
在这里插入图片描述
选择添加个人公钥
在这里插入图片描述
会自动生成标题,点击确认

设置好之后将地址行拷贝下来
在这里插入图片描述

本文链接http://element-ui.cn/article/show-153832.aspx