百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

分布式版本控制系统——Git(分布式部署软件)

wxin55 2024-11-04 14:49 7 浏览 0 评论

前言

今天我们来聊聊分布式版本控制系统——Git,废话不多说我们直接开始吧,喜欢的记得关注我哟。

一、Git简介

(一)什么是Git?

Git是一个开源的分布式版本控制系统(Distributed Version Control System,简称DVCS)。可以有效、高速地处理从很小到非常大的项目版本管理。

(二)什么是版本控制系统?

版本控制系统能追踪项目,从开始到结束的整个过程。对编程人员而言,版本控制技术是团队协作开发的桥梁,助力于多人协作同步进行大型项目开发。软件版本控制系统的核心任务:查阅项目历史操作记录、实现协同开发。

(三)常见的版本控制系统

① 集中式版本控制工具
集中式版本控制工具,版本仓库是集中存放在中央服务器的,team里每个人工作时,从中央 服务器下载代码。每个人个人修改后,提交到中央版本仓库。提交(commit)代码需要联网。如:svn
这会造成一个明显的问题:单点故障

② 分布式版本控制工具
分布式版本控制系统可以没有 “中央服务器”,每个人的电脑上都是一个完整的版本仓库,这样工作的时候,不需要联网。因为版本仓库就在你自己的电脑上。多人协作只需要各自修改,开发完成即可,推送给对方【联网】,推送的时候是将整个版本仓库推过去。如:Git

这个共享版本库一般指的是代码托管平台,比较有名就是github,gitee

(四)Git的特点

① 速度、简单的设计
② 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
③ 完全分布式
④ 有能力高效管理类似 Linux 内核一样的超大规模项目(速度和数据量)
⑤ 协同开发

Clone:克隆,从远程仓库中克隆代码到本地仓库,第一次操作
Push:推送,代码完成后,需要和团队成员共享代码时,将代码推送到远程仓库。
Pull:拉取,从远程库拉代码到本地库,自动进行合并(merge),最后放到工作区。

checkout:将本地仓库的内容检出到工作区
add:在提交前先将代码提交到暂存区
commit:提交到本地仓库

(五)基本概念

本地仓库: 在本地主机上的一个代码库,可以独立存在,也可以与远程仓库进行关联

工作区:对任何文件的修订(增删改),都先放在工作区,工作区不与任何仓库分支进行关联 暂存区:把修订的文件,从工作区经过add(添加)后与某一个仓库分支进行关联,只要进 入缓存区的文件才能commit(提交)到本地仓库。

远程仓库 : 在局域网或互联网上的一个主机,存放代码库的主机或平台,比如GitHub、 Gitee.com(码云)

分支:代码存放在仓库,默认是主分支(master),可以在主分支基础上创建很多子分支,比如 develop(开发)、bugfix(bug修复)等。

二、Git安装和使用

2.1 目的

通过git管理github托管项目代码

2.2 下载安装

  • GIt官网下载:https://www.git-scm.com/download/win
  • 双击安装
  • 选择安装的工作目录
  • 选择组件
  • 开始菜单目录名设置
  • 选择使用命令行环境

以下三步默认,直接点击next,之后等待安装,检验一下安装成功与否:

2.3 Git基本工作流程

Git工作区域

2.4 Git初始化及仓库创建和操作

基本信息设置

 设置用户名
git config --global user.name 'you name'


设置用户名邮箱
 git config --global user.email 'you email'

目的:可以在对github项目操作时显示是谁操作过此项目,便于软件开发流程

初始化一个新的Git仓库

1、创建文件夹

2. 进入该文件的根目录,单击右键,选择【Git Bash Here】,输入如下代码:

初始化成功会出现一个.git文件夹,如上图所示

向仓库添加文件并提交到暂存区

touch test.py                         # 创建test.py文件到工作目录

git add test.py                       # 添加test.py到暂存区(单个提交)
 
git commit -m  '第一次提交文件'         # 添加test.py到仓库

如果想把本地的所有文件放到暂存区,可输入如下命令:

 git add .

查看修改状态

假如你修改了文件,包括增、删、改,需要查看一下修改过哪些文件,可输入如下命令:

 git status

红色的部分表示你操作过哪些文件,而在上面我们增加了一个TXT文件

删除仓库文件

注意:增加、删除、修改文件等操作我们可不用命令执行,可以手动在本地操作然后把操作过程提交到远程(github/gitlab/gitee)就行,当然也可根据你自己的喜好来决定

2.5 提交本地项目到远程大致流程:

  git branch                  #查看当前所有分支
  git branch -b 分支           #创建分支
  git branch checkout 分支     #切换分支
 
  git status                  #查看修改所有文件状态
  git add ./[file]            #增加指定修改文件或者所有文件到暂存区
  git commit -m '备注提交目的'  #提交目的备注
  git pull origin master      #拉取项目,这一步通常是别人也在同一分支进行操作时,要push必须先pull
  git push origin master/[其他分支]  #把暂存区的文件推送到远程仓库
  git merge/rebase origin master    #如果你需要把当前分支合并到master分支可执行此操作
  git reset --hard 版本号            #当操作错误时回退至指定的版本

注意:github默认主分支是main,如果想修改成master,可先在右上角头像那里点击【Settings】,在点击【Repositories】,如下图所示:

好了今天的分享就到这里了喜欢的可以点赞评论加关注哟。

相关推荐

ES6中 Promise的使用场景?(es6promise用法例子)

一、介绍Promise,译为承诺,是异步编程的一种解决方案,比传统的解决方案(回调函数)更加合理和更加强大在以往我们如果处理多层异步操作,我们往往会像下面那样编写我们的代码doSomething(f...

JavaScript 对 Promise 并发的处理方法

Promise对象代表一个未来的值,它有三种状态:pending待定,这是Promise的初始状态,它可能成功,也可能失败,前途未卜fulfilled已完成,这是一种成功的状态,此时可以获取...

Promise的九大方法(promise的实例方法)

1、promise.resolv静态方法Promise.resolve(value)可以认为是newPromise方法的语法糖,比如Promise.resolve(42)可以认为是以下代码的语...

360前端一面~面试题解析(360前端开发面试题)

1.组件库按需加载怎么做的,具体打包配了什么-按需加载实现:借助打包工具(如Webpack的require.context或ES模块动态导入),在使用组件时才引入对应的代码。例如在V...

前端面试-Promise 的 finally 怎么实现的?如何在工作中使用?

Promise的finally方法是一个非常有用的工具,它无论Promise是成功(fulfilled)还是失败(rejected)都会执行,且不改变Promise的最终结果。它的实现原...

最简单手写Promise,30行代码理解Promise核心原理和发布订阅模式

看了全网手写Promise的,大部分对于新手还是比较难理解的,其中几个比较难的点:状态还未改变时通过发布订阅模式去收集事件实例化的时候通过调用构造函数里传出来的方法去修改类里面的状态,这个叫Re...

前端分享-Promise可以中途取消啦(promise可以取消吗)

传统Promise就像一台需要手动组装的设备,每次使用都要重新接线。而Promise.withResolvers的出现,相当于给开发者发了一个智能遥控器,可以随时随地控制异步操作。它解决了三大...

手写 Promise(手写输入法 中文)

前言都2020年了,Promise大家肯定都在用了,但是估计很多人对其原理还是一知半解,今天就让我们一起实现一个符合PromiseA+规范的Promise。附PromiseA+规范地址...

什么是 Promise.allSettled()!新手老手都要会?

Promise.allSettled()方法返回一个在所有给定的promise都已经fulfilled或rejected后的promise,并带有一个对象数组,每个对象表示对应的pr...

前端面试-关于Promise解析与高频面试题示范

Promise是啥,直接上图:Promise就是处理异步函数的API,它可以包裹一个异步函数,在异步函数完成时抛出完成状态,让代码结束远古时无限回掉的窘境。配合async/await语法糖,可...

宇宙厂:为什么前端离不开 Promise.withResolvers() ?

大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发。1.为什么需要Promise.with...

Promise 新增了一个超实用的 API!

在JavaScript的世界里,Promise一直是处理异步操作的神器。而现在,随着ES2025的发布,Promise又迎来了一个超实用的新成员——Promise.try()!这个新方法简...

一次搞懂 Promise 异步处理(promise 异步顺序执行)

PromisePromise就像这个词的表面意识一样,表示一种承诺、许诺,会在后面给出一个结果,成功或者失败。现在已经成为了主流的异步编程的操作方式,写进了标准里面。状态Promise有且仅有...

Promise 核心机制详解(promise机制的实现原理)

一、Promise的核心状态机Promise本质上是一个状态机,其行为由内部状态严格管控。每个Promise实例在创建时处于Pending(等待)状态,此时异步操作尚未完成。当异步操作成功...

javascript——Promise(js实现promise)

1.PromiseES6开始支持,Promise对象用于一个异步操作的最终完成(包括成功和失败)及结果值的表示。简单说就是处理异步请求的。之所以叫Promise,就是我承诺,如果成功则怎么处理,失败怎...

取消回复欢迎 发表评论: