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.mzph.cn/news/809858.shtml

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

相关文章

OpenCV4.9更多形态转换

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV4.9处理平滑图像 下一篇:OpenCV4.9更多形态转换 基于这两者,我们可以对图像进行更复杂的转换。在这里,我们简要讨论 OpenCV 提供的 5 个操作: …

FreeBuf 全球网络安全产业投融资观察(3月)

综述 据不完全统计,2024年3月,全球网络安全市场共发生投融资事件53起,其中国内4起,国外49起。 3月全球络安全产业投融资统计表(数据来源:航行资本、36氪) 整体而言,国内4起投融资事…

AI写作软件哪个好?这4款好评如潮

在信息时代,AI技术的发展的日新月异,AI写作软件也因此诞生。特别是人们对于高效、便捷的写作工具需求日益增长,AI写作软件作为一种新兴的工具,在帮助人们提升写作效率、拓展创作思路方面发挥着越来越重要的作用。这些AI写作软件为…

C语言 函数——代码风格

目录 基本的代码规范 程序版式 对齐(Alignment)与缩进(indent) 变量的对齐规则 空行——分隔程序段落的作用 代码行内的空格——增强单行清晰度 代码行 长行拆分 标识符命名规则 标识符命名的共性规则 windows应用程序…

PostgreSQL入门到实战-第十八弹

PostgreSQL入门到实战 PostgreSQL中表连接操作(二)官网地址PostgreSQL概述PostgreSQL中表别名命令理论PostgreSQL中表别名命令实战更新计划 PostgreSQL中表连接操作(二) 了解PostgreSQL表别名及其实际应用程序。 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容…

19c数据库/dev/shm/过小导致pga内存不够

pga_aggregate_limit已经设置了120G,alert还是报内存不够 查询select * from v$pgastat,发现MGA占了80G内存 查看/dev/shm: 发现设置了7G,操作系统是512G,正常情况下/dev/shm应该是操作系统的一半,修改为250G后数据库…

微信小程序 django+nodejs电影院票务售票选座系统324kd

小程序Android端运行软件 微信开发者工具/hbuiderx uni-app框架:使用Vue.js开发跨平台应用的前端框架,编写一套代码,可编译到Android、小程序等平台。 前端:HTML5,CSS3 VUE 后端:java(springbootssm)/python(flaskdja…

vue3:菜单、标签页和面包屑联动效果

文章目录 1.整体思路2.实现过程 概要 提示:这里可以添加技术概要 例如: openAI 的 GPT 大模型的发展历程。 1.整体思路 在之前做的后台项目中,菜单、标签页和面包屑之间的联动,自己都是通过在路由前置守卫中,定义b…

微服务面试题二

1.什么是雪崩 微服务之间相互调用,因为调用链中的一个服务故障,引起整个链路都无法访问的情况。 如何解决雪崩? 超时处理:请求超时就返回错误信息,不会无休止等待仓壁模式:限定每个业务能使用的线程数&a…

WPS的JS宏如何批量实现文字的超链接

表格中需要对文字进行超链接,每个链接指引到不同的地址。例如: 实现如下表格中,文件名称超级链接到对应的文件路径上,点击对应的文件名称,即可打开对应的文件。 序号文件名称文件路径1变更申请与处理表.xls文档\系统…

第十三届蓝桥杯省赛大学B组编程题(c++)

D.刷题统计 二分(AC): 注意:二分时右边界 right 的确定 #include<iostream> using namespace std; long long a,b,n; bool check(long long x){long long tx/7;x%7;long long temp0;if(x<5) tempx*a;else temp5*a(x-5)*b;long long cntt*(5*a2*b)temp;return cnt&g…

MySOL之旅--------MySQL数据库基础( 2 )

本篇碎碎念:尽自己最大的努力,直到筋疲力尽为止,加油 今日份励志文案: 别人都在前进,我为什么要停下 目录 补上一条博客缺失的内容 常用数据类型 数值类型&#xff1a; 字符串类型&#xff1a; 日期/时间类型&#xff1a; 二进制类型&#xff1a; 其他类型&#xff1a; …

抖音小店入驻有什么条件?资金少,没经验的普通人做得起吗?

大家好&#xff0c;我是电商花花。 在直播电商的推动下&#xff0c;抖音小店独特的电商模式下吸引着众多的商家&#xff0c;吸引着一波又一波的创业者入驻&#xff0c;想要在抖音小店上开垦出属于自己的电商净土。 想要入驻抖音小店还需要一些条件&#xff0c;然后才能入驻成…

Python机器学习学习线路

随着人工智能技术的飞速发展&#xff0c;机器学习已经成为计算机科学领域的热门话题。Python&#xff0c;作为一门功能强大且易于上手的编程语言&#xff0c;成为学习机器学习的理想选择。本文将为您介绍一条Python机器学习的学习线路&#xff0c;帮助您逐步掌握机器学习的基础…

ARM/X86+FPGA轨道交通/工程车辆行业的解决方案

深圳推出首条无人驾驶地铁—深圳地铁20号线&#xff0c;可以说是深圳地铁的一次开创性的突破。智能交通不断突破的背后&#xff0c;需要很严格的硬件软件等控制系 统&#xff1b;地铁无人驾驶意味着信号系统、通信系统、综合监控系统、站台屏蔽门工程等项目必须严格执行验收。…

ping命令返回无法访问目标主机和请求超时浅析

在日常经常用ping命令测试网络是否通信正常&#xff0c;使用ping命令时也经常会遇到这两种情况&#xff0c;那么表示网络出现了问题。 1、请求超时的原因 可以看到“请求超时”没有收到任何回复。要知道&#xff0c;IP数据报是有生存时间的&#xff0c;当其生存时间为零时就会…

goproxy一键安装脚本(稳定易用的proxy软件)

goproxy 官网 https://goproxy.cn/ go语言开发的简单易用高性能proxy 软件 #!/bin/bash # time: 2021-05-11 17:47:39 # by: Chen ##执行脚本需要传入网络设备名 ##例&#xff1a;sh goproxy-install.sh eth0# 0.安装必须要的依赖 yum install wget -y || apt install wget -y…

vue简单使用二(循环)

目录 属性绑定 if判断&#xff1a; for循环&#xff1a; 属性绑定 代码的形式来说明 三元表达式的写法&#xff1a; if判断&#xff1a; for循环&#xff1a; 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"…

ActiveMQ + MQTT 集群搭建(虚机版本) + Springboot使用配置

文章目录 前言一、ActiveMQ、 MQTT是什么&#xff1f;1.ActiveMQ介绍2.MQTT介绍 二、集群搭建步骤1.下载apache-activemq-5.15.12-bin.tar.gz2.上传apache-activemq-5.15.12-bin.tar.gz到服务器并解压文件到文件夹clusters、master、slave三个文件夹下面形成三个节点&#xff0…

Win10下安装Anaconda

Anaconda是可以便捷获取包且对包能够进行管理&#xff0c;同时对环境可以统一管理的发行版本&#xff0c;它包含了conda、Python在内的超过180个科学包及其依赖项。 安装Anaconda Anaconda官方下载网址&#xff1a;https://www.anaconda.com/download 官网页面中&#xff0c…