【Git详解大全】

文章目录

    • 1. Git 概述
      • 1.1 版本控制
    • 2. Git常用命令
      • 2.1 初始化本地库
      • 2.3 添加到暂存区
      • 2.4 提交本地库
      • 2.5 修改文件
      • 2.7 历史版本
    • 3. 分支操作
      • 3.1 什么是分支
      • 3.2 分支的操作
    • 4. Git团队协作
    • 5.GitHub远程仓库的操作
      • 5.1 将本地库推送到远程库
      • 5.2 拉取远程库到本地库
      • 5.3 克隆远程库到本地库

1. Git 概述

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

1.1 版本控制

版本控制就是一种记录文件内容的变化,方便后面查询阅读之前文件修改情况。
可以记录文件修改历史记录,方便让用户可以看到历史版本,进行切换。
【Git详解大全】_第1张图片

从个人开发到团队开发:

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

【Git详解大全】_第2张图片

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

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

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

  • 缺点:如果中央服务器宕机。那么,所有的人都无法提交更新,也无法协同工作。
    【Git详解大全】_第3张图片

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

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

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

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

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

【Git详解大全】_第4张图片

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

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

###2.2 查看本地库状态

git status

空文件:

【Git详解大全】_第5张图片

On branch master : git默认是master分支

No commits yet     : 没有提交

nothing to commit : 没有提交的文件

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

【Git详解大全】_第6张图片

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

  • 红色字体代表未被跟踪

2.3 添加到暂存区

git add 文件名 或者 git add .

【Git详解大全】_第7张图片

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

2.4 提交本地库

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

【Git详解大全】_第8张图片

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

【Git详解大全】_第9张图片

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

2.5 修改文件

【Git详解大全】_第10张图片

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

【Git详解大全】_第11张图片

2.7 历史版本

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

【Git详解大全】_第12张图片

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

3. 分支操作

3.1 什么是分支

  • 什么是分支

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

【Git详解大全】_第13张图片

优点:

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

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

3.2 分支的操作

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

在这里插入图片描述

  • 增加分支
  git branch 分支名

【Git详解大全】_第14张图片

  • 切换分支
git checkout hot-fix

【Git详解大全】_第15张图片

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

【Git详解大全】_第16张图片

  • 分支合并
git merge 分支名

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

【Git详解大全】_第17张图片

  • 合并分支(冲突合并)

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

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

【Git详解大全】_第18张图片

【Git详解大全】_第19张图片

  • 修改完后,仍然需要将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版本控制,都是在本地库进行的(分布式版本控制工具)

团队内协作:

【Git详解大全】_第20张图片

跨团队协作:

【Git详解大全】_第21张图片

5.GitHub远程仓库的操作

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

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

5.1 将本地库推送到远程库

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

【Git详解大全】_第22张图片

5.2 拉取远程库到本地库

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

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

【Git详解大全】_第23张图片

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

5.3 克隆远程库到本地库

git clone 需要克隆的链接

【Git详解大全】_第24张图片

克隆做了三件事:

  • 拉取代码

  • 初始化本地库

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

【Git详解大全】_第25张图片

你可能感兴趣的:(git,git,服务器,github)