当前位置:   article > 正文

【Git详解大全】

git详解

1. Git 概述

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

1.1 版本控制

版本控制就是一种记录文件内容的变化,方便后面查询阅读之前文件修改情况。
可以记录文件修改历史记录,方便让用户可以看到历史版本,进行切换。
在这里插入图片描述

从个人开发到团队开发:

如果不借助版本控制,那么小蓝的开发会覆盖掉小红的开发。

在这里插入图片描述

1.2集中式版本控制VS分布式版本控制

  • 集中式版本控制,例如CVS、VSS都有一个单一的集中管理的服务器,保存所有文件的修改版本,可以通过客户端与服务器连接,来获取最新的代码。

  • 优点:每个人都能看到,项目的其他人正在作什么。

  • 缺点:如果中央服务器宕机。那么,所有的人都无法提交更新,也无法协同工作。
    在这里插入图片描述

    当A修改完后,提交到服务器,服务器就会有A1版本

    B可以获取A1版本,进行修改,修改后提交到服务器,此时服务器就会多一个B1版本

  • 分布式版本控制Git工具,客户端提取的不是最新版的文件快照,而是把代码的仓库,完整的镜像到本地库 。这样所有的操作都可以在本地库完整,就算是一起协同工作的文件发生故障,我都可以通过客户端的本地库进行恢复。(每个客户端的每一次文件提取,实际上都是对整个仓库的完整备份)

  • 优点:服务器宕机的情况下,也可以进行并发操作。(因为版本控制是在本地进行,相当于每个客户端,同样也是服务器

  • 每个客户端保存的都是整个完整的项目(包含历史记录)

在这里插入图片描述

2. Git常用命令

命令名称作用
git config --global user.name 用户名设置用户签名(为了区分是谁提交的代码)
git config --global user.email 邮箱设置用户邮箱(可以是虚拟的邮箱)
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit - m “我做了什么修改”提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本穿梭

2.1 初始化本地库

作用:为了让git管理你本地文件,所以要初始化本地库

git init
  • 1

会生成一个.git的文件(隐藏文件)

###2.2 查看本地库状态

git status
  • 1

空文件:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EnZt86sw-1653812832486)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220527102927210.png)]

On branch master : git默认是master分支

No commits yet     : 没有提交

nothing to commit : 没有提交的文件
  • 1
  • 2
  • 3
  • 4
  • 5

当创建了一个hello.txt文件后:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EAyjK9xG-1653812832487)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220527103402062.png)]

  • 有未被跟踪的文件,hello.txt(只有git add.后才会被git跟踪)

  • 红色字体代表未被跟踪

2.3 添加到暂存区

git add 文件名 或者 git add .
  • 1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZPHV0kjI-1653812832488)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220527103847187.png)]

  • 文件变成绿色代表已经被跟踪,目前出去暂存区(暂存区的文件可以删除修改)
git rm --cached hello.txt ----------将暂存区的文件删除,但是本地文件仍然存在
  • 1

2.4 提交本地库

git commit -m "你的信息" -----形成你的历史版本,就不能删除了
  • 1

在这里插入图片描述

git reflog -----查看版本号
git log   ------查看详细的版本号
  • 1
  • 2

在这里插入图片描述

日志:在master分支下的,目前指向第一次版本提交

2.5 修改文件

在这里插入图片描述

文件修改,并且未被跟踪。在将文件推送到本地库,进行日志查看,此时指针指向第二次版本

在这里插入图片描述

2.7 历史版本

git reflog                (查看版本信息)
git log                 (查看详细的版本信息)
git reset --hard 版本号      (版本切换)
  • 1
  • 2
  • 3

在这里插入图片描述

git控制版本不是赋值粘贴给你很多副本,而是在本地库的内存中记录了很多历史版本信息,通过指针来进行版本之间的切换的

3. 分支操作

3.1 什么是分支

  • 什么是分支

    在版本控制的过程中,同时进行多个任务,为每个任务设置一个单独分支,就算该分支任务失败了,也不会影响到主分支任务,直接删掉就可以。(也就相当于在一个副本上进行操作)

在这里插入图片描述

优点:

  • 同时进行多个功能的开发,提高开发效率

  • 各个分钟独立进行。如果一个分支开发失败,不会对其他分支有任何影响,直接删除就可以

3.2 分支的操作

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上
  • 查看分支
  git branch -v
  • 1

在这里插入图片描述

  • 增加分支
  git branch 分支名
  • 1

在这里插入图片描述

  • 切换分支
git checkout hot-fix
  • 1

在这里插入图片描述

  • 在hot-fix分支上修改文件,进行提交到本地库

在这里插入图片描述

  • 分支合并
git merge 分支名
  • 1

合并分支,将该分支合并到当前分支上,例如你想将hot-fix分支合并到master分支上,你就需要首先来到master指针上。

在这里插入图片描述

  • 合并分支(冲突合并)

原因:在合分支的情况下,俩个分支在同一个文件的同一个位置有俩套完全不同的修改.Git无法代替我们决定哪一个,所以必须人为决定新代码的内容

如果只是一个人进行修改(hot-fix),而master并没有修改,那么此时不会出现合并冲突。

在这里插入图片描述

在这里插入图片描述

  • 修改完后,仍然需要将hello.txt放到暂存区,并且需要提交本地库,而且这次提交本地库git commit(命令时不能带文件名)

  • 合并合并,只会修改master分支,而hot-fix分支不会改变

    master、hot-fix其实都是指向具体版本的记录的指针。当前的所在的分支,其实是由HEAD决定的、所以创建分支,实际上就是多创建一个指针

    HEAD如果指向master,那么我们现在就是还在master分支上。

    HEAD如果指向hot-fix,那么我们现在就是在hot-fix分支上

    HEAD指针是指向具体哪个分支的,而master,或者hot-fix指针是具体指向哪一个版本的。

4. Git团队协作

因为平时git commit是在本地仓库进行合作,例如程序员A在自己的pc上有v1,v2,v3三个版本。程序员B在自己的pc上也有v1,v2,v3三个版本。此时我们就需要代码托管中心(远程库)。

Git版本控制,都是在本地库进行的(分布式版本控制工具)

团队内协作:

在这里插入图片描述

跨团队协作:

在这里插入图片描述

5.GitHub远程仓库的操作

命令名称作用
git remove -v查看当前所有远程地址的别名
git remote add 别名 远程地址起别名
git push 别名 分支推送本地分支上的内容到远程仓库
git clone 远程地址将远程仓库的内容克隆到本地
git pull 远程库地址别名、远程分支名将远程仓库对于分支最新内容拉下来后与当前本地分支直接合并
  • 创建远程地址别名(链接太长了,起一个别名,以后进行拉去(pull)、克隆(clone)、推送(push)的时候就可以用别名)

    git remote -v  查看当前所有远程地址的别名
    
    git remote add 别名 远程地址
    
    • 1
    • 2
    • 3

5.1 将本地库推送到远程库

git push 别名 master   (如果不用别名的话,就用链接)
  • 1
  1. 创建库后会有Https和SSH俩个链接,一般选择SSH,速度快。不需要输入密码
  2. 修改别名
  3. 开始push推送

在这里插入图片描述

5.2 拉取远程库到本地库

当远程库修改了,我也想同步到本地库,此时用pull

git pull 别名 master   (如果不用别名的话,就用链接)
  • 1

在这里插入图片描述

此时本地库代码和远程库代码已经同步了

5.3 克隆远程库到本地库

git clone 需要克隆的链接

在这里插入图片描述

克隆做了三件事:

  • 拉取代码

  • 初始化本地库

  • 创建别名(默认别名是origin

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/747453
推荐阅读
相关标签
  

闽ICP备14008679号