git

概念

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的项目。

版本控制:版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统 。

代码托管中心

我们已经有了本地库,本地库可以帮我们进行版本控制,为什么还需要代码托管中心呢?
它的任务是帮我们维护远程库,下面说一下本地库和远程库的交互方式,也分为两种:

  1. 团队内部协作

    image-20210716160327295
  2. 跨团队协作

    image-20210716160355825

    https://github.com/SoniaChan33/SoniaChan33.github.io

初始化本地仓库

  • 创建一个文件夹

    image-20210716160820389
  • 打开Git终端:Git Bash Here

  • 查看Git安装版本

    1
    git --version
  • 清屏

    1
    clear
  • 设置签名

    1
    2
    git config --global user.name "TeaSea33"
    git config --global user.email "TeaSea33@outlook.com"
  • 本地仓库的初始化操作(目录在本地仓库里)

    1
    git init
    image-20210716162158453
  • 查看.git下的内容

    image-20210716162242909

    注意事项: .git目录下的本地库相关的子目录和子文件不要删除,不要胡乱修改。

Git常用命令

add和commit

  • 先创建文件

  • 将文件提交到暂存区

    1
    git add Demo2.txt
  • 将暂存区的内容提交到本地库

    image-20210716162745742
  • 注意:

    1. 不放在本地仓库中的文件,git是不进行管理
    2. 即使放在本地仓库的文件,git也不管理,必须通过add,commit命令操作才可以将内容提交到本地库。

Status

查看工作区和暂存区的状态

  • 创建一个文件,然后查看状态

    1
    git status
    image-20210716163201433
  • 然后将Demo2.txt通过git add命令提交到暂存区

    1
    git add "Demo3.txt"
  • status查看状态

    image-20210716163335957
  • commit提交文件

    image-20210716163613057
  • 修改文件 并查看状态

    image-20210716163744634
  • 重新添加至暂存区 并查看状态

    image-20210716163903519
  • 提交以后查看状态

    image-20210716164259073 image-20210716164315251

log

可以查看提交的日志,显示最近到最远的日志

日志展示方式

  1. ```shell
    git log

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    <img src="git/20210716165040.png" alt="image-20210716164533294" style="zoom:67%;" />

    ---> 分页

    当历史记录过多的时候使用**空格**翻页,**b** 回到上一页,到尾页显示END,

    退出:**q**

    2. ```shell
    git log --pretty=oneline
    image-20210716165022038
  2. ```shell
    git log –oneline

    1
    2
    3
    4
    5

    <img src="git/20210716165148.png" alt="image-20210716165147993" style="zoom:67%;" />

    4. ```shell
    git reflog

    多了信息:HEAD@{数字}

    数字:指针回到当前这个历史版本需要多少步

    image-20210716165500983

reset

前进或者后退历史版本

  • 先查看历史log状态
image-20210716172535073
  • 将文件后退到版本1

    image-20210716173722034
  • 再次查看

    image-20210716173804875

三个参数(hard\mixed\soft)

git reset –[参数] [索引]

  • hard

    本地库的指针移动的同时,重置暂存区,重置工作区

    image-20210716190011958
  • mixed

    本地库的指针移动的同时,重置暂存区,但是工作区不动

    image-20210716190039546
  • soft

    本地库的指针移动的时候,暂存区,工作区都不动

    image-20210716190052572

用得最多的就是第一种hard参数

hard

1.找回本地库删除的文件

  • 新建一个Test2.txt文件 并将它add到暂存区中

    image-20210716191040843
  • 再通过commit提交到本地库

    image-20210716191249904
  • 删除工作区中的Test2.txt 并将删除操作同步到暂存区

    image-20210716191505941
  • 将删除操作同步到本地库

    image-20210716191516088
  • 查看日志

    image-20210716191540549
  • 找到本地库中删除的文件,实际上就是将历史版本切换到刚才添加文件的那个版本即可

    image-20210716191642335

2.找回暂存区删除的文件

  • 删除工作区数据

    image-20210716192257627
  • 同步到缓存区

    image-20210716192305650
  • 查看日志

    image-20210716192331458
  • 找到当前指针 然后返回到该状态

    image-20210716192952612 image-20210716193047918

diff

  1. 比对工作区暂存区

    1
    git diff [文件名]
    • 添加并提交一个内容为aaaa的Test3.txt
    image-20210716195249530
    • 更改工作区的文件加入bbb,再用dif进行比对,发现不同
    image-20210716195504098
    • 如果修改了多个文件,多个文件的比对命令直接是git diff
    image-20210716195715409
  2. 比对暂存区本地库

    1
    git diff [历史版本] [文件]
    • 文件添加不提交到本地库,此时暂存区就和工作区相同为aaaabbb

    • 查看日志

      image-20210716202947616

      此刻的本地库还停留在之前第一次修改

    • 比对暂存区和本地库中的HEAD当前指针状态

      image-20210716203056977

      发现不一样,说明没有提交的时候就是不一样的

    • HEAD部分可以改成其他历史版本的标号

      image-20210716203405603

分支

查看分支

image-20210716205522520

创建新分支

image-20210716205639017

切换分支

image-20210716205742388

进入branch01分支,增加内容

image-20210716210648550 image-20210716210051334

再次查看两个分支发现主分支没有改变

image-20210716210157353

查看文件

image-20210716210515711

将branch01合并到主分支

image-20210716211526286

因为在同一文件的同一位置修改了文件

image-20210716211737215

解决冲突:

人为决定,留下想要的就可以,然后再添加

image-20210716212101854

提交冲突,不能带文件名

image-20210716212214847

Github

创建远程库

为远程库取别名

image-20210717114246916

将本地库数据推送到远程库中

image-20210717114612323 image-20210717114625397 image-20210717114728691

查看远程库

image-20210717114756656

SSH免密操作

  1. 进入用户的主目录中:

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

    image-20210717204402583
  3. 发现.ssh目录下有两个文件

    image-20210717204425794
  4. 第二个文件里面的密钥复制,去github下新建密钥

  5. 密钥生成:

    image-20210717144958526

免密操作使每次需要push仓库的时候,都不用再输入密码434