Git简单入门(学习笔记)

Git简单入门(学习笔记)



目录

  • 一. Git概念
  • 二. 版本控制
  • 三. Git下载与安装
  • 四. Git结构
  • 五. 本地库与远程库的交互方式
  • 六. 代码托管中心
  • 七. 初始化本地仓库



一. Git概念

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


二. 版本控制

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

  版本控制的好处在于可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态。也可以比较文件的变化细节,从而查看是谁修改了什么地方,导致的一些问题,等等。

  *举个例子:假如你今晚需要上线软件的4版本,但在这过程中测试人员发现4版本里有bug,而开发人员无法及时赶来修改bug,这时便可以运用版本控制回溯到之前的3版本。

  版本控制系统分为两大类:集中化版本控制系统(常见的有SVN,CVS等)和分布式版本控制系统(常见的有Git)。

Git简单入门(学习笔记)_第1张图片

  集中化版本控制系统都有中央服务器,不同的开发人员可以直接连接服务器获取数据,以及提交下载等等。每个人都可以在一定程度上看到项目中的其他人正在做些什么。但缺点是中央服务器的单点故障。

  *举个例子:如果服务器宕机一小时,那么在这一小时中,谁也无法提交更新。假如这个时候你把软件的4版本修改的一塌糊涂,这时你想回溯到3版本,但因为中央服务器宕机,你无法进行操作。(遇到这种情况建议提前备份,这样回溯时可以用备份)。

  分布式版本控制系统中,客户端并不只是提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这时每个客户端上都有最新版本和历史版本,这样一来每个客户端都相当于服务器,就算服务器都宕机了,但只要有一个客户端是好的,就没问题。这里也是一个去中心化的思想

  而且,许多这类系统都可以指定和若干不同的远端代码仓库进行交互,这样,你就可以在同一个项目中分别和不同工作小组的人互相协作。

  分布式版本控制系统在管理项目时存放的不是项目版本与版本之间的差异,他存的是索引(所需磁盘空间很少的所以每个客户端都可以放下整个项目的历史记录)。

  *举个例子:假如你用了SVN存储项目(集中化版本控制系统),当你从版本3迭代到版本4的时候,你存储的并不是版本4,而是版本3与版本4的差异。这时你想从版本4回溯到版本1的话,要先从版本4回溯到版本3,再从版本3回溯到版本2……直到版本1,这是非常耗时的。但,假如你用的是git存储项目(分布式版本控制系统),当你从版本3迭代到版本4的时候,你存储的并不是版本4,也不是版本3与版本4的差异,而是版本3的索引,这时你想从版本4回溯到版本1的话,可以直接找到版本1的索引,这是非常快的。


三. Git下载与安装

详见博客:https://blog.csdn.net/m0_59188912/article/details/123909979


四. Git结构

  本地结构:工作区,暂存区,本地库

Git简单入门(学习笔记)_第2张图片

概念:
  写的文件都存在工作区,暂存区里是打算提交的东西,但还没有提交,用作临时存储。本地库里存的都是每个历史版本的信息。

命令:
  工作区提交到暂存区:git add
  暂存区提交到本地库:git commit


五. 本地库与远程库的交互方式

团队内部合作:

  1. 项目经理创建本地库。
  2. 将本地库内容推送到远程库。(push操作)
  3. 程序员将远程库里的内容克隆到本地库。(clone操作)
  4. 程序员将写完的代码推送到远程库。(push操作)(需要加入团队才有权利推送)
  5. 项目经理将远程库里的内容拉取到本地。(pull操作)

Git简单入门(学习笔记)_第3张图片

跨团队合作:

  1. A公司项目经理创建本地库。
  2. 将本地库内容推送至A项目经理创建的远程库。(push操作)
  3. B将A的远程库复制一份形成一个新的远程库。(fork操作)
  4. 程序员将远程库内容克隆到本地库。(clone操作)
  5. 程序员推送代码到远程库B。(push操作)
  6. 远程库B→远程库A发起请求。(pull request)
    远程库A审核。
    没有问题就把远程库B的内容合并到远程库A中。(merge)
  7. A公司项目经理或A公司程序员将远程库里的内容拉取到本地。(pull操作)

Git简单入门(学习笔记)_第4张图片


六. 代码托管中心

局域网环境:
搭建GitLab服务器等,适用于团队内部合作。

外网环境:
注册GitHub或Gitee(码云)等,适用于跨团队合作。

GitHub官网:https://github.com/

Git简单入门(学习笔记)_第5张图片

Gitee官网:https://gitee.com/

Git简单入门(学习笔记)_第6张图片


七. 初始化本地仓库

  1. 在本地磁盘中创建文件夹。

在这里插入图片描述

  1. 右键打开Git Bash Her。

Git简单入门(学习笔记)_第7张图片

Git简单入门(学习笔记)_第8张图片

  1. 右键打开Options设置。

Git简单入门(学习笔记)_第9张图片

  1. 设置Character set为UTF-8。

Git简单入门(学习笔记)_第10张图片

  1. 设置用户名。
    git config --global user.name “dgyj”

在这里插入图片描述

  1. 设置邮箱。
    git config --global user.email “[email protected]

在这里插入图片描述

  1. 切路径,去之前创建的文件夹的盘里(我之前是在f盘下创建的文件夹,所以我输入的是f:/)。
    cd f:/

在这里插入图片描述

  1. 再继续去之前创建的文件夹里。(我之前创建的文件夹名为GitRepository)
    cd GitRepository/

在这里插入图片描述

  1. Git初始化。
    git init

在这里插入图片描述

  1. 我们可以再检查一下是否有该文件。(.git目录是隐藏的)
    ll -la

Git简单入门(学习笔记)_第11张图片

  1. 查看.git里的文件(.git文件里的东西不要乱删和胡乱操作)
    ll -la .git/

Git简单入门(学习笔记)_第12张图片

*我的这里的一些显示有点问题,为了避免误导大家这里就用马赛克遮掉了。


八. 常用命令

*在Git中命令和Linux是一样的。

  1. 查看Git安装版本。
    git --version

在这里插入图片描述

  1. 清屏。
    clear

在这里插入图片描述

  1. 将文件提交到暂存区。(我要提交的文件名为test.txt)
    git add test.txt

在这里插入图片描述

  1. 将文件提交到暂存区后查看文件状态。
    git status

Git简单入门(学习笔记)_第13张图片

  1. 将暂存区的内容提交到本地库。
    git commit -m "这是我提交的测试文件 test.txt“ test.txt

Git简单入门(学习笔记)_第14张图片

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

  1. 查看提交的日志,由近到远。
    git log

在这里插入图片描述

当一页显示不下,数据过多的时候会有分屏。
下一页:空格
上一页:b
到尾页显示end
退出:q

  1. 日志展示方式二。
    git log --pretty=oneline

在这里插入图片描述

  1. 日志展示方式三。
    git log –oneline

在这里插入图片描述

  1. 日志展示方式四。
    git reflog

在这里插入图片描述

  1. 前进或者后退历史版本。
    git reset --hard a340e1c
    本地库的指针移动的同时,重置暂存区,重置工作区

Git简单入门(学习笔记)_第15张图片
Git简单入门(学习笔记)_第16张图片

  1. 本地库的指针移动的同时,重置暂存区,但是工作区不动。
    git reset --mixed

  2. 本地库的指针移动的时候,暂存区和工作区都不动。
    git reset --soft
    注意:最常用的就是hard。

  3. 删除工作区中的test.txt。
    rm test.txt

在这里插入图片描述

  1. 将删除操作同步到暂存区。
    git add test.txt

Git简单入门(学习笔记)_第17张图片

  1. 将删除操作同步到本地库。
    git commit -m “删除test.txt文件” test.txt

Git简单入门(学习笔记)_第18张图片

  1. 找回本地库中删除的文件(实际上就是将历史版本切换到刚才添加文件的那个版本即可)。
    git reset --hard a340e1c

Git简单入门(学习笔记)_第19张图片

  1. 比对工作区和暂存区的文件。
    git diff test.txt

Git简单入门(学习笔记)_第20张图片

Git是按照行为单位管理数据。所以,删除一行,添加一行。

  1. 多个文件比对时,不用加文件名。
    git diff

Git简单入门(学习笔记)_第21张图片

  1. 将暂存区和本地库中的文件进行比对。
    git diff HEAD test.txt

Git简单入门(学习笔记)_第22张图片

git diff 2be3d65 test.txt

在这里插入图片描述


九. 分支

  1. 概述
      在版本控制过程中,使用多条线同时推进多个任务,这里面说的多条线就是多个分支。分支的好处有:同时多个分支可以并行开发,互相不耽误,互相不影响,提高开发效率。

  2. 查看当前git里面的所有分支。
    git branch -v

在这里插入图片描述

  1. 创建分支。
    git branch newone

Git简单入门(学习笔记)_第23张图片

当前在那个分支上时通过*来显示

  1. 切换分支。
    git checkout newone

Git简单入门(学习笔记)_第24张图片

  1. 将newone中的内容和主分支内容进行合并。
    git merge newone

Git简单入门(学习笔记)_第25张图片

  1. 文件合并冲突。

Git简单入门(学习笔记)_第26张图片
在这里插入图片描述

处在合并状态中

在这里插入图片描述

出现冲突

Git简单入门(学习笔记)_第27张图片

在同一个文件的同一个位置,才会出现冲突问题。

解决方法:只能靠人商量,人为决定,留下想要的即可。

  1. 解决完冲突问题后,取消合并状态。

Git简单入门(学习笔记)_第28张图片


十. github注册
注册教程详见博客:https://danbaku.blog.csdn.net/article/details/124912340


十一. 创建github远程库

  1. 创建远程库,点击右上角加号,new repository。

Git简单入门(学习笔记)_第29张图片

  1. 创建库信息填写。

Git简单入门(学习笔记)_第30张图片

  1. 在首页左侧有创建的库,点击进去。

在这里插入图片描述

这就是刚刚创建的远程库的地址

  1. 通过别名在git本地将地址保存。
    查看别名:
    git remote -v

在这里插入图片描述

起别名:
git remote add GitRetest https://github.com/Kevinzhushrek/GitRepository.git

在这里插入图片描述

fetsh:取回
push:推送

在这里插入图片描述


十二. 远程库操作

  1. 远程库推送。
    git push GitRetest master

在这里插入图片描述
Git简单入门(学习笔记)_第31张图片

完成

Git简单入门(学习笔记)_第32张图片

  1. 克隆操作。
    复制地址:

Git简单入门(学习笔记)_第33张图片

git clone https://github.com/Kevinzhushrek/GitRepository.git

Git简单入门(学习笔记)_第34张图片

D盘中出现:

Git简单入门(学习笔记)_第35张图片

克隆操作可以帮我们初始化本地库、将远程库的内容完整的克隆到本地、替我们创建远程库的别名。

  1. 拉取操作。
    拉取操作pull,相当于fetch操作和merge操作的合并。
    项目经理先确认远程库的内容是否更新了。
    项目经理进行拉取操作。

抓取操作:
git fetch GitRetest master

Git简单入门(学习笔记)_第36张图片

执行抓取操作后,只是将远程库的内容下载到本地。工作区中的文件并没有更新,工作区中还是原先的内容。

这时可以切换到下载下来的远程库的master中查看里面的内容。
git checkout GitRetest/master

Git简单入门(学习笔记)_第37张图片
Git简单入门(学习笔记)_第38张图片

发现没有什么问题即可进行合并操作:
git merge GitRetest/master

在这里插入图片描述

以上两个操作也可以通过一个操作解决:
git merge GitRetest/master

在这里插入图片描述

(未完待续……先学这么多就够了,后面的以后有空更)



本篇博客为本人学习Git时的详细记录,如有错误之处,还望各位指正。
文章为原创,如要转载请注明出处

你可能感兴趣的:(git,git,学习,github)