一个文章学会使用Git

news2024/11/18 17:45:03

GIT版本控制系统

版本控制系统 :

​ 1.记录历史版本信息 (记录每一次修改的记录)

​ 2.方便团队相互之间协作开发

​ …

常用的版本控制系统

  • cvs / svn : 集中式版本控制系统
  • git : 分布式版本控制系统

svn

image-20220811105227543

git

image-20220811110634502

GIT工作原理

  • 工作区 : 我们能看到的,并且用来写代码的区域
  • 暂存区 : 临时存储用的
  • 历史区 : 生成历史版本

工作区 -> 暂存区 -> 历史区

image-20220811161639123

GIT和GIT-HUB

git的全局配置

第一次安装完成git后,我们在全局环境下配置基本信息 : 我是谁?

$ git config -l  查看配置信息
$ git config --global -l  查看全局配置信息

配置全局信息: 用户名和邮箱
$ git config --global user.name 'xxx'
$ git config --global user.email 'xxx@xx.xx'

创建本地仓库完成版本控制

创建本地git仓库

$ git init
//=>会生成一个隐藏文件夹 ".git" (这个文件夹千万不要删,因为暂存区和历史区还有一些其它的信息都在这里,删了就不是一个完整的git仓库)

在本地编写完成代码后,把一些文件提交到暂存区

$ git add xxx  把某一个文件或者文件夹提交到暂存区
$ git add *    添加新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件;
$ git add -u   包含修改和删除的,但是不包含新增的
$ git add .    会把本地所有untrack的文件都加入暂存区,并且会根据.gitignore做过滤,但是git add * 会忽略.gitignore把任何文件都加入。 包含新增,修改(Git2.X 后包含删除)
$ git add -A   同时具备 * 和 -u 特征

$ git status   查看当前文件的状态 (红色代表在工作区,绿色代表在暂存区,看不见东西证明所有修改的信息都已经提交到历史区)

把暂存区内容提交到历史区

$ git commit -m '描述信息: 本次提交内容的一个描述'

# 添加并提交
$ git commit -a -m '描述信息: 本次提交内容的一个描述'   

# 查看历史版本信息 (历史记录)
$ git log 
$ git reflog  包含回滚的信息
$ git log --oneline  简单方式查看

文件误删除

$ git restore 文件名                 (删除文件后没有提交)
$ git reset --hard 078fla7(版本号)   (会把文件重置到, 078fla7这个版本号,这个版本号后面的版本号都没有了) 一般不使用
$ git revert 078fla7(需要恢复这个版本号的下一个版本号)  

分支操作

$ git branch 分支名字xxx      创建新的xxx分支
$ git branch -v              查看所有分支
$ git checkout 分支名字       切换分支
$ git checkout -b 分支名字    创建并切换分支
$ git branch -d 分支名字      删除分支

分支合并与冲突

# 需要把 某分支 合并到 master 分支中,需要首先切换到 master
$ git merge 某分支名称         合并分支
# 如果出现冲突,这需要手动把出现冲突的文件夹进行修改,然后重新 git add 和 commit

标签操作

# 版本号需要写完整的
$ git tag 标签名称 版本号         添加标签
$ git tag -d 标签名称             删除标签

远程仓库操作

GIT-HUB : https://www.github.com

一个网站 (一个开源的源代码管理平台) ,用户注册后,可以在自己账户下创建仓库,用来管理项目的源代码 (源代码是基于git传到仓库中)

我们所熟知的插件、类库、框架等都在这个平台上有托管,我们可以下载观看和研究源码等

  1. settings 用户设置

    • Profile 修改自己的基本信息
    • Account 可以修改用户名
    • Security 可以修改自己的密码
    • Emails 邮箱 (必须进行邮箱效验)
  2. 创建仓库

    new repository -> 填写信息 -> Create repository

    • public 公共仓库作为开源的项目
    • private 私有仓库作为内部团队协作管理的项目

    Settings -> 删除仓库Delete this repository

    ​ -> Collaborators 设置协作开发的人员

    Code 可以查看历史版本信息和分支信息

  3. 把本地仓库信息提交到远程仓库

//=>建立本地仓库和远程仓库的链接
# 查看本地仓库和哪些远程仓库保持链接
$ git remote -v
# 让本地仓库和远程仓库新建一个链接 origin是随便起的一个链接名 (可以改成自己想要的,只不过一般都用这个名字)
$ git remote add origin [git远程仓库地址]
# 删除关联信息
$ git remote rm origin
# 提交之前最好先拉取
$ git pull origin master
# 把本地代码提交到远程仓库 (需要输入github的用户名密码)
$ git push origin master
$ git clone [远程仓库git地址] [别名: 可以不设置,默认是仓库名]
/*
 *	真实项目开发流程:
 *		1.组长或者负责人先创建中央仓库 (增加协作者)
 *		2.小组成员基于 $ git clone 把远程仓库及默认的内容克隆到本地一份 (解决了三个事情: 初始化一个本地仓库"git init"、和对应的远程仓库也保持了关联"git remote add"、把远程仓库默认内容拉取到本地"git pull")
 *		3.每个组员写完自己的程序后,基于"git add / git commit"把自己修改的内容存放到历史区,然后通过"git pull / git push"把本地信息和远程仓库信息保持同步即可 (可能涉及冲突的处理)
 */

NPM

node package manger : Node模块管理工具,根据npm我们可以快速安装、卸载所需要的资源文件 (例如 : JQuery、vue、vue-router…)

去Node官网 : https://nodejs.org/zh-cn/ 下载Node (长期支持版),安装Node后,npm也就跟着安装了

$ node -v

$ npm -v 出现版本号证明安装成功

基于npm进行模块管理

https://www.npmjs.com/ 基于npm是从npmjs.com平台上下载安装

$ npm install xxx		把模块安装在当前项目中 (node_modules)
$ npm install xxx -g	把模块安装在全局环境中
$ npm i xxx@1.0.0		安装指定版本号的模块
$ npm view xxx version > xxx.version.json	查看某个模块的版本信息(输出到指定JSON文件中)

/*
 *	什么情况下会把模块安装在全局?
 *		->可以使用"命令"对任何的项目进行操作
 *		->$ npm root -g 查看全局安装的目录
 *		->因为在安装目录下生成了 xxx.cmd 的文件,所以我们能够使用 xxx 的命令进行操作
 *	安装在本地项目中的模块
 *		->可以在项目中导入进来使用
 *		->但是默认不能基于命令来操作 (因为没有.cmd文件)
 *		->但是可以基于package.json中的scripts,配置一些npm可以执行命令,配置后通过 $ npm run xxx执行
 */


$ npm init -y			初始化当前项目的配置依赖清单 (项目文件夹的名字中不能出现中文、大写字母和特殊符号)	=>创建成功后在当前项目中生成 package.json 的清单文件
			dependencies : 生产依赖模块 (开发和项目部署的时候都需要)
			devDependencies : 开发依赖模块 (只有开发的时候需要)
			scripts : 配置本地可执行命令的
			
$ npm i xxx --save		把模块保存在清单生产依赖中
$ npm i xxx --save-dev	把模块保存在清单开发依赖中
$ npm install			跑环境,按照清单按照所需的模块

$ npm root -g			查看全局按照模块的目录
$ npm uninstall xxx
$ npm uninstall xxx -g	卸载安装过的模块

window操作系统 : 在某个文件夹下执行DOS命令

  1. windows + r ->运行窗口中输入cmd

    ​ ->磁盘符: 进入到指定磁盘

    ​ ->cd xxx 进入到指定的目录

    ​ ->cd 直接拖进想要进入的目录文件夹 直接进入

  2. 在文件夹地址直接输入cmd即可

  3. 在文件夹中"shift+鼠标右键" -> 在此处打开命令窗口

如果想查看当前目录中的文件内容

MAC : ls / ls -A

win: dir

一个新项目的开始 :

  1. 创建项目文件夹
  2. 把他作为一个新的仓库进行代码管理 (可以基于 $ git clone 把远程仓库克隆下来即可)
  3. 初始化模块配置清单 package.json : $ npm init -y
  4. 安装所需要的模块 : $ npm i jquery bootstrap@3 less
  5. 正常开发
  6. 开发中 : 可能需要在本地配置命令去完成一些功能 (例如less文件编译,此时需要配置npm可执行的命令)
"scripts": {
	"less": "lessc 1.less 1.min.css -x",
    "xxx" : "webpack"
}

​ 需要编译的时候,执行 $ npm run xxx

​ …

  1. 开发中我们需要基于git把文件进行管理 : 生成对应的历史版本

​ 提交到暂存区、历史区、远程仓库的时候,项目中很多文件是无需处理和提交的,例如 : node_modules、 .idea…,不需要提交的,我们生成一个.gitignore忽略文件

# dependencies
node_modules

# testing
/coverage

# production
/build

# misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*

# webStorm
.idea
  1. 由于每次 git 提交的时候,我们都不去提交 node_modules,所以团队协作开发中,我们每当拉下来程序后,都需要"跑环境" : 执行 $ npm install ,按照项目中的 package.json 中的依赖项信息,把缺失的模块都安装一遍

yarn

$ npm install yarn -g  
$ yarn inti / yarn install
$ yarn add xxx@x.xx.xx --dev
$ yarn remove xxx
...
yarn不能安装全局模块

nrm

$ npm install nrm -g
$ nrm ls			查看所有可用的镜像源
$ nrm use xxx		将下包的镜像源切换为 xxx 镜像
$ nrm current 		显示当前使用的源
接下来继续使用npm命令即可

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

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

相关文章

nodejs的安装以及Dos的命令

1.0 nodeJS nodejs是基于谷歌v8引擎的执行环境,他没有BOM、DOM nodeJS安装 找官网 ->下载 -> 傻瓜式下一步 -> win键 r -> 输入cmd 进入dos操作命令 -> node -v 查看版本 1.1 DOS 命令【掌握】 进入指定文件夹 cd 文件目录 退出到上一层 cd .…

112.【Vue-细刷-03】

Vue-03 (二十)、过渡和动画1.过渡案列_原生实现2.过渡案列_Vue实现3.动画案列_Vue实现 (1)4.动画案列_Vue实现(2)5.Vue实现时间格式化6.Vue实现过滤器7.Vue常用内置指令 (二十一)、Vue的自定义指令1.自定义非内嵌指令(不保留h2中的原有text)2.自定义非内…

在线教育机构视频加密防下载和防盗用的方法有哪些可以借鉴

阿酷TONY / 原创 / 2023-5-5 / 长沙 在线教育机构防止视频被盗用和视频被下载,可以采取以下措施,一共10条,总有一条适用于您吧,收藏一下吧~~~~~ 1.VRM分片错序视频加密 2.Html5全链路视频加密 3.用户ID跑马灯 4.数字化动态水印 …

【科普帖】晶振 OCXO、VCXO、TCXO、VC-TCXO、DCXO、SPXO区别

一、前言 晶体振荡器用作频率基准,以生成非常稳定的频率源。它用于许多应用中,如频率合成器,本地振荡器,并在调制解调器和其他电路中提供稳定的时钟。 晶体输出频率漂移主要受温度、电源电压和老化的影响。其中温度变化是最为重要…

PS VR创始成员:瑕不掩瑜,PS VR2是跨世代的飞跃

今年2月,索尼次世代VR头显PS VR2正式发售,这款立项近7年的产品受到了游戏玩家和从业者广泛关注,市面上也有很多种不同的测评报告。PS VR项目创始成员、前索尼沉浸式体验专家、高级VR游戏设计师Jed Ashforth也发表了自己对于该头显的一些看法&…

Verilog概述一:Verilog HDL和 VHDL详细对比

当前比较流行的硬件设计语言有两种,即 VHDL 与 Verilog HDL,两者各有优劣,也各有相当多的拥护者。 VerilogHDL和VHDL都是完备的HDL设计和验证语言,具有完整的设计方法和设计规范。 何为HDL HDL(hardware descriptio…

Go type关键字定义新类型和类型别名的区别

type关键字再定义类型和类型别名有很大的区别,前者是新定义一个数据类型,后者是对类型的重命名。 type NewString stringtype OldString stringtype NewString string声明了一个NewString类型,和string具有完全一致的数据结构,确…

【Linux】usb游戏手柄测试、编程

1、简述 在ubuntu18.04下使用usb游戏手柄,之前联系客服,客服回答不清楚是否支持linux,因此采购一款北通蝙蝠2的手柄来测试 2、测试 2.1 测试环境 系统:Ubuntu18.04 正常电脑系统ubuntu中都是自带手柄驱动的joystick,即内核配置已添加选项:Joysticks interface和Joys…

vue - 常见的移动端适配方案

移动端适配方案 rem适配原理方案1:rem媒体查询方案2:jsrem方案3:vwrem(不用查询屏幕宽度) 移动端适配经常使用的就是 rem; 主要有以下几种方案: 1:rem 媒体查询(media) …

Springboot(二):配置文件读取

1.1引入依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><a…

一目了然凉哥为大家倾力打造的付费专栏

写在前面 大家好&#xff0c;我是几何心凉&#xff0c;欢迎来到我的付费专栏系列&#xff0c;本专栏将深入介绍 Vue 3 和 Vite&#xff0c;以及如何在 TypeScript 的帮助下构建现代化的 Web 应用程序。 Vue 是一个流行的 JavaScript 框架&#xff0c;它允许开发人员构建高性能…

Java之多线程初阶

目录 一.进程和线程 1.什么是进程 2.并发,并行和串行 3.线程和多线程 4.进程和线程的区别(重点) 5.多线程的优点 6.多线程的缺点 二.线程的创建 1.继承Thread类 2.实现Runnable接口重写run()方法 3.通过匿名内部类的方式创建Thread和实现Runnable 4.通过Lambda表达式…

金豺(GJO)优化算法、matlab代码实现以及与PSO、GWO、SO算法比对

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1 算法原理2 算法步骤2.1 初始化种群2.2 搜索猎物(全局搜索)2.3 包围和围捕猎物&#xff08;局部搜索&#xff09;2.4 从全局搜索转向局部搜索 3 算法流程图4 m…

(22)目标检测算法之 yolov8模型导出总结

yolov8模型导出总结 不断更新中… 几种部署情况: onnxxmlengine官网说明:https://github.com/ultralytics/ultralytics/blob/main/docs/modes/export.md导出参数: onnx 参数解析format: 导出的模型形式:onnx xml engine ... imgsz: 设置模型的输入尺寸大小,默认640*640 ke…

记录一次docker镜像迁移过程

1.在母本服务器上查看要复刻的docker镜像。 sv800:build 作为docker镜像源[repository:tag],使用docker save 指令提出docker镜像包rk3588.tar docker save -o rk3588.tar sv800:build 2.在新环境下加载docker镜像包&#xff0c;预先安装docker指令工具 docker load -i rk35…

OCT图像中的多尺度无监督视网膜水肿区域分割

文章目录 Multiscale Unsupervised Retinal Edema Area Segmentation in OCT Images摘要本文方法原始的DCCS无监督图像聚类Pseudo-Mask-Guided Pixel-Wise Segmentation 实验结果 Multiscale Unsupervised Retinal Edema Area Segmentation in OCT Images 摘要 提出了一种新的…

STM32F051K8U6按键中断实例

引言 最近要开始做毕设了&#xff0c;准备用STM32做一个平衡小车&#xff0c;好久没做过STM32的裸机项目了&#xff0c;做几个项目练练手&#xff0c;复习一下。本例程使用STM32CubeMX配套hal库来实现按键中断和串口中断。芯片用的是STM32F051K8U6。 一、按键中断 &#xff0…

iproute2和流量控制(ip和tc工具)---iproute2/ip/tc/qdisc实现Linux下的QoS控制

iproute2是一个软件包&#xff0c;这个软件包包含了多种用于高级路由&#xff0c;隧道和流量控制配置工具软件。 iproute2提供了Linux内核对QoS的实现&#xff0c;你可以在以下网站中找到英文原版的信息osdl.org和lartc.org。这些工具软件中&#xff0c;最重要的当数ip和tc这二…

【Flutter从入门到入坑之五】你真的会使用 Widget 中的 State 吗?

【Flutter从入门到入坑】Flutter 知识体系 【Flutter从入门到入坑之一】Flutter 介绍及安装使用 【Flutter从入门到入坑之二】Dart语言基础概述 【Flutter从入门到入坑之三】Flutter 是如何工作的 【Flutter从入门到入坑之四】构建Flutter界面的基石——Widget State 前沿UI 编…

2023 年 3 月青少年机器人技术等级考试理论综合试卷(一级)

2023 年 3 月青少年机器人技术等级考试理论综合试卷&#xff08;一级&#xff09; 一、单选题(共 30 题&#xff0c;共 60 分) 1.关于使用动滑轮说法正确的是&#xff1f;&#xff08; B&#xff09; A. 是否省力与动滑轮的颜色有关 B.可以改变力的大小 C.不能省力 D.动滑轮的位…