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

news2024/11/13 23:34:47

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.coloradmin.cn/o/1596653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为云开年采购季:企业级市场的火爆营销炼成记

作者 | 曾响铃 文 | 响铃说 销售火爆,一单又一单,“生意好个不停”。 这一幕,常常发生在C端消费品市场上,要么是线上爆单,要么是线下人头攒动。 而现在,在B端企业级市场上也发生了类似的情景。 自3月1…

ZJJ-2A直流绝缘监视继电器额定电流3.1mA额定电压110VDCJOSEF约瑟

系列型号 JJJ-1绝缘监视继电器; ZJJ-1/A绝缘监视继电器; ZJJ-1A绝缘监视继电器; ZJJ-2型直流绝缘监视继电器 ZJJ-2直流绝缘监视继电器; ZJJ-2B直流绝缘监视继电器; ZJJ-2AC直流绝缘监视继电器; 用途…

Day 41:动态规划 LeedCode 343. 整数拆分 96.不同的二叉搜索树

343. 整数拆分 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1: 输入: n 2 输出: 1 解释: 2 1 1, 1 1 1。 思路: 1.确定dp数组&#xff0…

《TinyLlama: An Open-Source Small Language Model》全文翻译

【Title】 TinyLlama:开源小语言模型 【Abstract】 我们推出了 TinyLlama,这是一个紧凑的 1.1B 语言模型,在大约 1 万亿个令牌上进行了大约 3 个时期的预训练。 TinyLlama 基于 Llama 2(Touvron 等人,2023b&#xff…

自定义Centos的终端的命令提示符

背景 当我们使用终端登陆Centos时,就自动打开了ssh终端。这个终端的命令提示符一般是这样的: 这个以#号结束的一行字,就是我们说的命令提示符了。 这个是腾讯云的服务器的提示符,可以看到主机名是VM-4-7-centos。 但是这个看起…

Python-GEE遥感云大数据分析、管理与可视化及多领域案例实践应用

随着航空、航天、近地空间遥感平台的持续发展,遥感技术近年来取得显著进步。遥感数据的空间、时间、光谱分辨率及数据量均大幅提升,呈现出大数据特征。这为相关研究带来了新机遇,但同时也带来巨大挑战。传统的工作站和服务器已无法满足大区域…

SD-WAN提升企业网络体验

在现代企业中,网络体验已成为提升工作效率与业务质量的关键因素。SD-WAN技术的出现,以其独特的优势,为企业提供了优化网络连接、加速数据传输、提升服务质量和应用访问体验,以及增强网络稳定性的解决方案。接下来,我们…

设计模式在芯片验证中的应用——策略

1. 策略模式 策略模式是一种行为设计模式, 它能让你定义一系列算法, 并将每种算法分别放入独立的类中, 以使算法的对象能够相互替换。 在RTL设计中可能包含了复杂的多个访问仲裁逻辑,使用了多种算法来确定访问内存优先级顺序&am…

plc远程监控系统

随着工业4.0时代的到来,智能制造成为了工业发展的核心驱动力。在这个信息化、网络化的新时代,PLC远程监控系统以其强大的监控与管理能力,正逐渐成为工业自动化领域的明星产品。今天,我们就来聊聊PLC远程监控系统以及HiWoo Cloud平…

网络协议——OSPF(开放式最短路径优先)详解

1.什么是OSPF 开放式最短路径优先OSPF 是一种动态的高度可靠和高度可扩展的路由协议,用于构建大型网络中的动态路由系统 2. OSPF的协议号为:89 3. OSPF的特点: OSPF是链路状态协议使用了区域概念:减少路由选择协议对路由器CPU,…

从零开始学习Linux(1)---基本命令(1)

1.学习准备 我学习Linux是使用xshell远程登录自己的云服务器来进行。 xshell是一个远程终端管理软件,下载官网: https://www.netsarang.com/products/xsh_overview.htm 下载安装的时候选择 "home/school"…

H.265网页无插件播放EasyPlayer.js流媒体播放器常见问题及解答

EasyPlayer属于一款高效、精炼、稳定且免费的流媒体播放器,可支持多种流媒体协议播放,无须安装任何插件,起播快、延迟低、兼容性强,使用非常便捷。 今天我们来汇总下用户常见的几个问题及解答。 1、EasyPlayer.js播放多路H.265视…

「每日跟读」英语常用句型公式 第12篇

「每日跟读」英语常用句型公式 第12篇 1. I’m having a hard time __ing 我现在不太能__(遇到困难) I’m having a hard time concentrating on my work.(我现在不太能集中注意力在我的工作上) I’m having a hard time slee…

UE5 把蓝图内的变量和事件暴露给序列使用

在蓝图变量内勾选Expose to Cinematics 事件: 在角色内添加自定义事件 在序列内对着角色的号添加Event,选择Trigger 添加关键帧,然后在关键帧右键添加class,在class下绑定事件

抖音小店新手玩家能做吗?跟着我的步骤做,爆单很简单

大家好,我是电商笨笨熊 抖店新手玩家能做吗? 当然可以。 抖音小店自推出以来已经吸引了无数的新手玩家,且不少玩家从个人走到了团队化。 新手做抖店,最重要的是掌握方法,只要方法对了,方向对了&#xf…

工业物联网网关

在数字化浪潮席卷全球的今天,工业物联网(IIoT)作为连接物理世界与数字世界的桥梁,正在逐渐改变传统工业的面貌。而作为IIoT的核心枢纽,工业物联网网关发挥着至关重要的作用。今天,我们就来深入了解一下工业…

leetcode代码记录(回文数

目录 1. 题目:2. 我的代码:小结: 1. 题目: 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序&#x…

web笔记再整理

前四天笔记在此连接: web前端笔记表单练习题五彩导航栏练习题-CSDN博客https://blog.csdn.net/simply_happy/article/details/136917265?spm1001.2014.3001.5502 # 1.边框弧度​ div {​ width: 300px;​ height: 50px;​ background-color: aqua;​ …

JAVAEE——网络初始

文章目录 网络发展史独立模式网络模式局域网LAN路由器的诞生 网络通信的基础IP地址端口号 认识协议OSI七层模型TCP/IP五层模型 网络发展史 独立模式 在原始的年代中电脑间想要通信需要两台电脑连接一根网线,但是一台电脑基本上只有一个接口。因此想要链接更多的电…

RISCV指令集体系简读之RV32I

RV32I 指令格式 用于寄存器-寄存器操作的R类型指令用于短立即数和访存load操作的I型指令用于访存store操作的s型指令用于条件跳转操作的B类型指令用于长立即数的U型指令用于无条件跳转的J型指令 特点: 所有指令都是32bits, 简化了指令解码;…