当前位置: 首页 > news >正文

入职前回顾一下git-01

git安装

Linux上安装git

在linux上建议用二进制的方式来安装git,可以使用发行版包含的基础软件包管理工具来安装。

  • 红帽系
sudo yum install git
  • Debian系
sudo apt install git

Windows上安装git

  • 去官网下载和操作系统位数相同的安装包.
  • 或者可以直接安装GitHub for Windows。该安装程序包含图形化和命令行版本的 Git。 它也能支持Powershell,提供了稳定的凭证缓存和健全的换行设置。 你可以在GitHub for Windows 网站下载

Mac上安装git

  • 通过homebrew安装git,brew install git
  • 通过Xcode安装git,在AppStore重安装Xcode,Xcode默认集成了Git。运行Xcode选择菜单Xcode->Preferences,在弹窗中找到Download,选择Command Line Tools,点"Install"就可以完成安装了。

为什么要版本管理

  • 版本管理有一个中央服务器,可以保存所有代码、文档
  • 每一次的修改都可以提交到版本库,修改有记录,可追踪
  • 不害怕某个同事离职了,代码没有入库
  • 本地的代码流失后,可以从版本库检出
  • 多人协作,每个同事完成的工作提交到版本库,方便进行集成
  • 当我们要开发需求或修复PR时,可以从版本库上拉出分支管理
  • 在大的企业,每次提交都可能触发一次构建,实时检查代码的质量
  • 如果构建失败了,可以自动revert掉某次提交

配置git

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。 这样做很重要,因为每一个 Git的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改:

git config --global user.name "lennlouis"
git config --global user.email "lennlouis@tom.com"
  • 如果使用了--global选项,那么该命令只要运行一次,之后无论在该系统上做任何事情,git都会使用那些信息。当你想针对特定的项目使用不同的name email那就在那个项目的目录下运行没有--global选项的命令配置。
  • 很多 GUI 工具都会在第一次运行时帮助你配置这些信息。
  • 你也可以使用git config --list来查看git的所有配置。

获取帮助

若你使用 Git 时需要获取帮助,有三种方法可以找到 Git 命令的使用手册:

git help <verb>
git <verb> --help
man git-<verb>
  • 例如获得config的命令手册,执行:
git help config
  • 官方文档

创建仓库

什么是仓库呢?就是可以用git管理的一个目录,这个仓库里所有的文件的改动(增加/修改/删除)都由git跟踪记录。也能通过git查看所有的记录,当然也能够通过git“还原”到某个记录点。

mkdir git_test
cd git_test
git init

上面三个步骤就可以创建一个空的仓库了,这个时候会在仓库目录下多了一个.git目录,.git目录里由很多关于git管理的文件,有了仓库之后,我们就可以使用git add和git commit向仓库添加要跟踪的文件,和提交修改的内容了。

git add

在仓库里刚新建的文件是不会被跟踪起来的,比如我们使用git status就能查看到文件的状态,需要使用git add才可以。(为了演示需要我创建几个文件)

向暂存区添加文件
git add . # 将所有修改添加到暂存区
git add *.cpp # 将以.cpp结尾的文件的所有修改添加到暂存区
git add hello* # 将所有以Hello开头的文件的修改添加到暂存区,例如: helloWorld.txt,hello.h,helloGit.md ...
git add hello?.* # 将以hello开头后面只有一位的文件提交到暂存区 例如:hello1.txt,helloA.cpp 如果是helloGit.txt和hello.cxx是不会被添加的。
删除暂存区文件

使用git rm -rf或者git rm --cached把文件从暂存区删除,不是从磁盘删除,只是不被git管理而已。

git commit

git add只是把文件添加到暂存区而已,并没有真正跟踪起来,需要使用git commit命令提交到仓库才能真正被git跟踪记录,git commit命令的用法如下:

git commit -a -m "initial commit" #把暂存区和当前已被跟踪的文件的所有的修改提交到仓库里,-m参数指定了此次提交的message内容
git commit Makefile helloworld.cpp -m "修改编译文件,添加了helloworld.cpp"

优雅地提交修改

git commit file1.name file2.name file3.name .. -m "commit message"

commit指提交修改到本地的仓库里,file*.name指的是带commit的文件 –m后面的内容指提交的信息,即备注。

git commit -a -m "commit message"

添加的-a参数会把当前暂存区里所有的修改(包括删除操作)都提交,但是那些尚未添加到暂存区的内容是不会提交的,网上有很多的博客内容说-a参数会把尚未add的文件也提交了,这个说法是错误的。

git commit --amend

把此次提交追加到上一次的commit内容里。

Angular团队规范

  • message格式
<type>(<scope>): <subject>
<BLANK LINE>	# 标题行:必填,描述主要修改类型和内容
<body>			# 主题内容:描述为什么修改,做了什么修改,开发思路等
<BLANK LINE>	# 页脚注释:放Breaking Changes或Closed Issues
<footer>
  • Type分类:

    • feat:新特性
    • fix:问题修改
    • refactor:代码重构
    • docs:文档修改
    • style:代码格式修改,注意不是css修改
    • test:测试用例修改
    • chore:其他修改,比如构建流程,依赖管理
  • scope:commit影响范围,即影响了什么模块或者组件,比如:route,component,utils,build等

  • subject:commit概述,建议符合50/72 formatting

  • body:commit具体修改内容,可以分为多行,建议符合50/72 formatting

  • footer:一些备注,通常是BREAKING CHANGE或修复的bug链接,或者feature等其他信息

使用git commit模版规范提交

  1. ~/.gitconfig文件里添加
[commit]template = ~/.gitmessage

  1. 添加~/.gitmessage文件
<feat>(<>): <提交描述><body><footer># - type: feat(新特性), fix(修改问题), docs(文档修改), style(代码格式修改, 注意不是 css 修改), refactor(代码重构), test(测试), chore(其他修改, 比如构建流程, 依赖管理)
# - scope: (可以为空)影响的的范围
# - subject提交描述

推荐课程:https://xxetb.xetslk.com/s/3oyV5o

相关文章:

入职前回顾一下git-01

git安装 Linux上安装git 在linux上建议用二进制的方式来安装git&#xff0c;可以使用发行版包含的基础软件包管理工具来安装。 红帽系 sudo yum install gitDebian系 sudo apt install gitWindows上安装git 去官网下载和操作系统位数相同的安装包.或者可以直接安装GitHub…...

this指向解析

先看题目&#xff1a; 第一题&#xff1a; var name window var person1 { name: person1, show1: function () { console.log(this.name) }, show2: () > console.log(th show3: function () { return function () { …...

学习小记-Nacos的服务注册与发现原理

服务注册&#xff1a; 当一个服务实例启动时&#xff0c;它会向 Nacos 服务器注册自己的信息&#xff0c;包括 IP 地址、端口号、元数据&#xff08;如服务版本、区域信息等&#xff09;。服务实例使用 Nacos API 发送注册请求&#xff0c;Nacos 服务器接收请求并存储服务实例信…...

视频号矩阵系统源码,实现AI自动生成文案和自动回复私信评论,支持多个短视频平台

在当今短视频蓬勃发展的时代&#xff0c;视频号矩阵系统源码成为了自媒体人争相探索的宝藏。这一强大的技术工具不仅能帮助我们高效管理多个短视频平台&#xff0c;更能通过AI智能生成文案和自动回复私信评论&#xff0c;为自媒体运营带来前所未有的便利与效率。 一、视频号矩…...

[Spring] SpringBoot基本配置与快速上手

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; Collection与…...

tomcat的优化、动静分离

tomcat的优化 tomcat自身的优化 tomcat的并发处理能力不强&#xff0c;大项目不适应tomcat做为转发动态的中间件&#xff08;k8s集群&#xff0c;pytnon rubby&#xff09;&#xff0c;小项目会使用&#xff08;内部使用的&#xff09;动静分离 默认配置不适合生产环境&…...

Python与自动化脚本编写

Python与自动化脚本编写 Python因其简洁的语法和强大的库支持&#xff0c;成为了自动化脚本编写的首选语言之一。在这篇文章中&#xff0c;我们将探索如何使用Python来编写自动化脚本&#xff0c;以简化日常任务。 一、Python自动化脚本的基础 1. Python在自动化中的优势 Pyth…...

树与二叉树

前言&#xff1a; 树这个结构想必在日常生活中很常见到&#xff0c;而现在要介绍的是一种独特的数据结构--二叉树。 1.树 &#xff08;1&#xff09;定义&#xff1a; 是一种非线性结构&#xff0c;有一个特殊的节点叫做根节点&#xff0c;树没有前驱节点&#xff1b;树是递…...

SpringBoot+Vue实现简单的文件上传(Excel篇)

SpringBootVue实现简单的文件上传 1 环境 SpringBoot 3.2.1&#xff0c;Vue 2&#xff0c;ElementUI 2 页面 3 效果&#xff1a;只能上传xls文件且大小限制为2M&#xff0c;选择文件后自动上传。 4 前端代码 <template><div class"container"><el…...

科研绘图系列:R语言金字塔图(pyramid plot)

介绍 金字塔图(Pyramid chart)是一种用于展示人口统计数据的图表,特别是用于展示不同年龄段的人口数量。这种图表通常用于展示人口结构,比如性别和年龄的分布。 特点: 年龄分层:金字塔图按年龄分层,每一层代表一个年龄组。性别区分:通常,男性和女性的数据会被分别展…...

Tomcat多实例

一、Tomcat多实例 Tomcat多实例是指在同一台服务器上运行多个独立的tomcat实例&#xff0c;每个tomcat实例都具有独立的配置文件、日志文件、应用程序和端口&#xff0c;通过配置不同的端口和文件目录&#xff0c;可以实现同时运行多个独立的Tomcat服务器&#xff0c;每个服务…...

前端Vue组件化实践:自定义加载组件的探索与应用

在前端开发领域&#xff0c;随着业务逻辑复杂度的提升和系统规模的不断扩大&#xff0c;传统的开发方式逐渐暴露出效率低下、维护困难等问题。为了解决这些挑战&#xff0c;组件化开发作为一种高效、灵活的开发模式&#xff0c;受到了越来越多开发者的青睐。本文将结合实践&…...

半小时获得一张ESG入门证书【详细中英文笔记一】

前些日子&#xff0c;有朋友转发了一则小红书的笔记给我&#xff0c; 标题是《半小时获CFI官方高颜值免费证书 ESG认证》。这对考证狂魔的我来说&#xff0c;必然不能错过啊&#xff0c;有免费的羊毛不薅白不薅。 ESG课程的 CFI 官方网址戳这里&#xff1a;CFI 于是信心满满的…...

类形断言和和类型推导的区别是什么?

类型断言&#xff08;Type Assertion&#xff09;和类型推导&#xff08;Type Inference&#xff09;在TypeScript中的区别 如下&#xff1a; 定义&#xff1a; 类型断言&#xff1a;是程序员明确指定一个值的类型&#xff0c;即允许变量从一种类型更改为另一种类型。它不会进行…...

Spring-Spring、IoC、DI、注解开发

1、Spring是什么 Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器(框架)。 Spring整体架构 Spring优点&#xff1a; Spring属于低侵入设计。IOC将对象之间的依赖关系交给Spring,降低组件之间的耦合&#xff0c;实现各个层之间的解耦&#xff0c;让我们更专注于业务…...

Facebook的未来蓝图:从元宇宙到虚拟现实的跨越

随着科技的不断演进和社会的数字化转型&#xff0c;虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;作为下一代计算平台正逐渐走进人们的视野。作为全球领先的科技公司之一&#xff0c;Facebook正在积极探索并推动这一领域的发展&#xff0c;以实现其…...

Redis6.2.1版本集群新加副本

测试数据 通过redis-benchmark生成测试数据 ./bin/redis-benchmark -h 172.31.4.18 -p 6381 -a Redis_6.2.1_Sc --cluster -t set -d 128 -n 10000000 -r 100000000 -c 200新加节点 172.31.4.18:6381> AUTH Redis_6.2.1_Sc OK172.31.4.18:6381> cluster meet 172.31.4…...

2.The DispatcherServlet

The DispatcherServlet Spring的Web MVC框架与许多其他Web MVC框架一样&#xff0c;是请求驱动的&#xff0c;围绕一个中央Servlet&#xff08;即DispatcherServlet&#xff09;设计&#xff0c;该Servlet将请求分派给控制器&#xff0c;并提供其他功能以促进Web应用程序的开发…...

bug定位策略

前提--用户环境层面 hosts异常&#xff1a;hosts文件主要是加快某个域名或者网站的解析速度&#xff0c;从而达到快速访问的作用&#xff0c;也可以屏蔽网站。hosts异常可能会导致部分网页无法访问&#xff0c;能够加载&#xff0c;但是网页无法正常显示&#xff1b;测试环境脏…...

基于R语言的水文、水环境模型优化技术及快速率定方法与多模型案例

在水利、环境、生态、机械以及航天等领域中&#xff0c;数学模型已经成为一种常用的技术手段。同时&#xff0c;为了提高模型的性能&#xff0c;减小模型误用带来的风险&#xff1b;模型的优化技术也被广泛用于模型的使用过程。模型参数的快速优化技术不但涉及到优化本身而且涉…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

Swagger和OpenApi的前世今生

Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章&#xff0c;二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑&#xff1a; &#x1f504; 一、起源与初创期&#xff1a;Swagger的诞生&#xff08;2010-2014&#xff09; 核心…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...