01-Git 之快速入门操作本地仓库

https://learngitbranching.js.org/?locale=zh_CN在线练习git

1. Git

安装好Git以后, 先检查是否已经绑定了用户名和邮箱

git config --list

1.1 为什么要使用版本控制?

从个人角度:
在做项目时,如果一点点去改代码会很乱,不利于我们的开发和进度。
使用版本控制可以让每一个历史版本都被记录,可以回到某一个历史状态,接着在这个历史状态下进行修改。
通俗来讲就是可以回退和撤销操作。

从团队合作角度:每一个都需要开发自己负责的功能,多个人在开发同一个项目时,必须使用版本控制协调好每个人对项目的更改

1.2 集中式版本控制

用户从远程仓库获取到的,只是最新版本的文件快照。

集中式的版本控制系统,所有的版本库是放在中央服务器中的
也就是说我们每一次的修改上传都是保存在中央服务器中的。
中央服务器就是个大仓库,大家把产品都堆里面,每一次需要改进和完善的时候,需要去仓库里面把文件给提出来,然后再操作。

集中式版本控制的缺点主要是

  1. 需要联网。无论是局域网还是互联网,电脑必须要与中央仓库联网。
  2. 中央仓库掌握完整的项目档案库(即所有文件即对应的修订版本),一旦中央仓库宕机,整个项目组都会停工;一旦中央仓库数据丢失,公司直接倒闭。

1.2.1 集中式版本控制的两种模式

1.2.1.1 锁定模式

在锁定模式下,当开发者想要修改某档案、签出该档案后,该档案便会进入锁定状态,其他开发成员便无法加以修改,直到签出者将该档案签回为止。
对于维持同步来说,这当然是一个十分保险的作法,因为永远不会有两个或以上的开发者同时修改同一个档案。
只是这种方法造成了开发者对于档案修改的互斥效应,大大降低了开发效率。

1.2.1.2 合并模式

在合并模式下,允许多位开发者同时针对同一档案进行修改
但是,若当他们分别将档案提交回仓库时发生冲突,便会自动进行合并,而若自动合并失败,再要求人工合并。

不过即使如此,最终目的还是要维持多个开发者间的同步。毕竟,版本控制的结果在集中式档案库中是唯一的,也是每位开发者都需与此结果保持一致的。

1.3 分布式版本控制

分布的含义是每台计算机上都还有一个完整的版本库。

也就是说,当用户 Clone 远程仓库时,并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来,包括完整的历史记录

不同于集中式版本控制系统的“中央服务器”,分布式版本控制系统可以通过推送版本库,实现不同的计算机之间的版本共享。
什么意思呢?就是说对于同一个文件A,如果两个人同时对A文件进行了修改,最新的版本应该都保存在各自的计算机中,想要实现协同开发,只需要将各自的最新版本库推送给对方,就可以得到最新的版本库了。

但是这里面有个问题,就是一个团队很大的情况下,大家都去修改,到底找谁同步版本库,不乱套了嘛。而且,大的开发项目也不是简单的两台计算机之间的版本互推就可以得到完整的版本库的。
所以,分布式版本控制系统中通常也会有一台充当“中央服务器”的计算机,大家都把版本推送到这台计算机上,而需要同步的人只需同步这一台固定的计算机就可以。

读到这,可能觉得又绕回到集中式版本管理系统了。
实则不然,所谓的分布式管理中的“中央服务器”是用来“交换意见”,或者说充当中介作用的。每一台计算机通过和这台固定的中介交换意见以后,都会拥有完整的版本库。

举个不恰当的例子,分布式中的“中央管理器”就是《乡村爱情》中的大脚超市,刘能、赵四以及长贵都掌握了最新的绯闻,通过大脚超市的意见交换后,每个人都掌握了整个象牙山的绯闻。我们可以看到,在这样的绯闻生态下,即便是王长贵挂了,象牙山的故事仍然可以继续。但是如果长贵是集中式的“中央管理器”,每个人可以将自己知道的绯闻、秘密吐槽给他且不外传,那么他的死将会直接导致《乡村爱情》的终结。

单枪匹马的工作流
在这里插入图片描述
团队协作的工作流
在这里插入图片描述
其中, pull request 与 pull 区别很大
pull request : 请求远程仓库拉取本人的 commt
pull : 将远程仓库同步更新到本地

2. Git管理本地仓库

初始化仓库(⭐)

现在F盘里创建一个文件夹demoProject,文件夹中建一个index.html。
在这里插入图片描述
① 在项目目录中,通过鼠标右键打开 CMD

② 执行 git init 命令将当前的目录转化为 Git 仓库

git init 命令会创建一个名为 .git 的隐藏目录,这个 .git 目录就是当前项目的 Git 仓库,里面包含了初始的必要文件,这些文件是 Git 仓库的必要组成部分
在这里插入图片描述

检查文件的状态(⭐⭐)

使用 git status 输出的状态
git status -s 输出简要状态

在这里插入图片描述
在这里插入图片描述
??代表图1的Untracked 状态,该文件处于工作区

跟踪新文件(⭐⭐⭐)

#使用命令 git add 开始跟踪 index.html 文件
git add index.html# 如果文件过多,你项跟踪目录下所有文件
git add *.*

之后再运行 git status 命令,会看到 index.html 文件在 Changes to be committed 这行的下面,说明已被跟踪,并处于暂存区,staged 状态:
在这里插入图片描述
提交更新(⭐⭐⭐⭐)

现在暂存区中有一个 index.html 文件等待被提交到 Git 仓库中进行保存。
执行 git commit 命令进行提交,其中 -m 选项用来附带备注

commit 之后的文件就处于本地 Git 仓库中了,commited状态

git commit -m "这是一个备注,刚刚新建了index.html 文件"

在这里插入图片描述

修改并更新(⭐⭐⭐⭐⭐)

目前,index.html 文件已经被 Git 跟踪,并且工作区和 Git 仓库中的 index.html 文件内容保持一致。

当我们修改了工作区中 index.html 的内容之后,再次运行 git status 命令,会看到如下的内容:

文件 index.html 出现在 Changes not staged for commit 这行下面

运行 git status -s 命令,会看到如下的内容:M 代表着 Modified,即修改过的、没有放入暂存区的文件

在这里插入图片描述
总而言之,现在文件处于工具区,但是 modified 状态,等待add到暂存区

接下来,我们可以相继 add 和 commit,以将修改后的文件保存到本地 Git 仓库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/620839.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《QT实用小工具·二十五》日志重定向输出

1、概述 源码放在文章末尾 日志重定向输出,包含如下功能: 支持动态启动和停止。支持日志存储的目录。支持网络发出打印日志。支持输出日志上下文信息比如所在代码文件、行号、函数名等。支持设置日志文件大小限制,超过则自动分文件&#xf…

免费插件集-illustrator插件-Ai插件-批量替换链接图

文章目录 1.介绍2.安装3.通过窗口>扩展>知了插件4.功能解释5.总结 1.介绍 本文介绍一款免费插件,加强illustrator使用人员工作效率,进行批量替换链接图。首先从下载网址下载这款插件 https://download.csdn.net/download/m0_67316550/87890501&am…

ZISUOJ 数据结构-栈

题目列表: 问题 A: 数据结构-栈-括号匹配 思路: 遇到左半边括号,将其入栈,遇到右半边括号,则先判断栈是否为空,若为空,则匹配失败,若不为空,则再判断栈顶元素是否是与之匹…

宝塔面板部署腾讯云的域名

一、腾讯云,搜索我的证书,点击打开如图所示,点击下砸 二、点击宝塔的证书,然后下载到桌面 三、解压 四、打开宝塔,网站》自己的项目列表中要绑定的ssl 五、对应的文件内容复制进去,保存并启用证书 六、有了…

快速掌握Spring监控(Spring Boot admin)

监控 监控可视化监控平台Admin底层逻辑info 自定义端点 监控 监控的作用: 监控服务状态是否宕机监控服务运行指标(内存,虚拟机,线程,请求等)监控日志管理服务(服务下线) 监控的实…

查看 Linux 接入的 USB 设备速率是 USB2 还是 USB3

查看接入 usb 设备的速率 使用以下命令查看接入的 USB 设备速率(每一行最后的 xxM 字样)。插入设备前查看一次,插入设备后查看一次,对比即可定位到刚插入的设备是哪一条。 lsusb -t命令输出如下图 对照 USB 速率表 对照 USB 速…

限制登录Linux服务器的几种方式

一.第一种方法 通过修改TCP Wrappers服务访问控制来实现限制登录Linux 1.这里以sshd服务为例,配置完成后,只允许配置允许的IP才能ssh连接本机服务器,其他IP拒绝判断某一个基于tcp协议的服务是否支持tcp_wrapper,要先判断它是否支…

关注招聘 关注招聘 关注招聘

🔥关注招聘 🔥关注招聘 🔥关注招聘 🔥开源产品: 1.农业物联网平台开源版 2.充电桩系统开源版 3.GPU池化软件(AI人工智能训练平台/推理平台) 开源版 产品销售: 1.农业物联网平台企业版 2.充电桩系统企业…

TinyEMU源码分析之中断处理

TinyEMU源码分析之中断处理 1 触发中断2 查询中断2.1 查询中断使能与pending状态(mie和mip)2.2 查询中断总开关与委托(mstatus和mideleg)2.2.1 M模式2.2.2 S模式2.2.3 U模式 3 处理中断3.1 获取中断编号3.2 检查委托3.3 进入中断3…

【C++】3.类和对象(中)

一、类的6个默认成员函数 在上一篇博客中,我们计算了空类的大小为 1 。那么空类中真的什么东西都没有吗?其实不是的,当一个类在什么都不写的时候就会自动生成6个默认的成员函数(用户没有写,但是编译器自动生成的成员函…

vue--双向数据绑定原理

Vue采用数据劫持 发布者-订阅者模式实现双向数据绑定,实现逻辑图如下所示: 数据劫持 Vue 借助Object.defineProperty()来劫持各个属性,这样一来属性存取过程都会被监听到 发布者-订阅者模式 主要实现三个对象:Observer&#…

详解IP证书申请

申请IP证书,也被称为IP SSL证书,是一种特殊的SSL证书,它不同于传统的域名验证(DV)证书,是通过验证公网IP地址而不是域名来确保安全连接。这种证书用于保护IP地址,并在安装后起到加密作用。以下是…