【Java架构-版本控制】-Git基础

本文摘要

Git作为版本控制工具,使用非常广泛,在此咱们由浅入深,分三篇文章(Git基础、Git进阶、Gitlab搭那家)来深入学习Git


文章目录

  • 本文摘要
  • 1.Git仓库基本概念
    • 1.1 远程仓库(Remote)
    • 1.2 本地库(Repository)
  • 2. Git仓库工作流程
  • 3. Git常用命令
  • 4. Git配置文件
    • 4.1. 查看配置文件
    • 4.2. 新增配置文件
    • 4.3. 删除配置文件
  • 5. .gitignore文件
    • 5.1. 文件加载进暂存区
    • 5.2. glob模式
    • 5.3. 匹配示例
    • 5.4. 定义全局忽略文件
    • 5.5. 通用忽略文件
  • 6.diff
    • 6.1. 命令
    • 6.2. 工作空间与暂存区
    • 6.3.暂存区与版本库
    • 6.4. 工作空间与版本库
    • 6.5. 版本库与版本库


1.Git仓库基本概念

1.1 远程仓库(Remote)

即资源库,是远程服务器机器上的代码库,用于做不同版本库文件保存、更新。如Gitlab、GitHub、Gitee

1.2 本地库(Repository)

即用户在本地创建的目录,拥有远程库的一个快照,由工作区+版本库构成

  • 工作区
    项目根目录中除.git目录以外的内容,存储内容的实际文件
  • 暂存区
    也叫做缓存区,暂存信息存放在.git目录下的index文件中,即.git/index中,用于临时保存修改的内容
  • 版本库(.git目录)
    本地库的根目录中的一个隐藏目录.git,用于记录版本信息,git进行版本控制所需要的文件,都放在.git文件夹中

2. Git仓库工作流程

  • 克隆远程库:从远程库上克隆完整的Git仓库(包括代码和版本信息)到本地;
  • 在本地库上修改代码:在本地库上根据不同的开发目的,创建分支,修改代码;
  • 提交到分支:在本地分支上提交代码;
  • 把修改合并到本地主分支:在本地库上提交更新,也就是说,把修改合并到本地主分支;
  • 把远程库合并到本地主分支:把远程库上的最新代码fetch下来,跟本地主分支合并,如果存在冲突,那么解决冲突。
  • 把本地主分支提交到远程库:生成补丁(patch),把补丁发送给远程库。

在这里插入图片描述

3. Git常用命令

命令作用示例
init初始化git项目git init
status查看git中文件状态git status
add将工作空间文件添加至git暂存区单文件:git add filename
多文件:git add file1 file2
所有文件:git add .
rm --cached将暂存区文件撤销回工作空间git rm --cached filename
restore将暂存区文件撤销回工作空间git restore --staged filename
commit将暂存区文件上传至git版本库git commit -m '提交注释'
log查看git操作日志显示所有日志:git log
简单显示日志:git log --pretty=oneline
reset --hard HEAD^1. 回退到上一个版本
2. 后边有几个^就表示回退到前边版本
3. 回退指定版本
1. 回退上一版本:git reset --hard HEAD^
2. 回退上上版本:git reset --hard HEAD^^
3. 回退至前10个版本:git reset --hard HEAD~10
reset --hard version回到至指定版本git reset --hard 996c
git reflog回退撤销git reflog
rm删除文件,文件从版本库移至暂存区,要完全删除,必须在执行commitgit rm filename

4. Git配置文件

Git 配置主要分为三类:优先级:仓库级(local)>用户级(global)>系统级(system),对应的文件分别为:仓库级(.git/config)、用户级(~/.gitconfig)、系统级(/etc/gitconfig)

4.1. 查看配置文件

  • 查看仓库级:git config --local -l
  • 查看用户级:git config --global - l
  • 查看系统级:git config --system -l

4.2. 新增配置文件

  • 仓库级:git config --local user.name ‘zhangsan’
  • 用户级:git config --global user.name ‘lisi’
  • 系统级:git config --system user.name ‘wangwu’

4.3. 删除配置文件

  • git config --global --unset user.name

5. .gitignore文件

5.1. 文件加载进暂存区

  • 提交所有变化:git add -A
  • 只提交修改、删除,不包括新建:git add -u
  • 只提交新建、修改,不包括删除:git add .

5.2. glob模式

  • “*”:匹配零个或多个任意字符
  • []:匹配方括号中的字符,如[ab]匹配a或b
  • ?:匹配任意一个字符
  • [n-m]:匹配所有这个字符范围内的字符

5.3. 匹配示例

  • logs/:忽略logs目录
  • /logs.txt:忽略logs.txt文件
  • *.class:忽略class结尾的文件
  • !/classes/.class:不忽略classes目录下的class结尾文件
  • tmp/*.txt:只忽略tmp目录下的txt结尾文件
  • **/foo:可以忽略/foo,a/foo,a/b/foo等

5.4. 定义全局忽略文件

  • git config --global core.excludesfile ~/.gitignore

5.5. 通用忽略文件

#java
*.class#package file
*.war
*.ear
*.zip
*.tar.gz
*.rar
#maven ignore
target/
build/#eclipse ignore
.settings/
.project
.classpatch#Intellij idea
.idea/
/idea/
*.ipr
*.iml
*.iws# temp file
*.log
*.cache
*.diff
*.patch
*.tmp# system ignore
.DS_Store
Thumbs.db

6.diff

diff:用于比较工作空间、暂存区、版本库中文件差异性

6.1. 命令

  • git diff readme.txt

6.2. 工作空间与暂存区

$ git diff 1.txt# a/1.txt:表示暂存区文件,b/1.txt:表示工作空间文件
diff --git a/1.txt b/1.txt# 表示暂存区的版本
index 9a71f81..478d5b1 100644
--- a/1.txt
+++ b/1.txt# -1:表示暂存区的行数,2:表示工作空间行数
@@ -1,2 +1,2 @@hello world
-
# update workspace:表示工作空间增加了该行数据
+update workspace

6.3.暂存区与版本库

$ git diff --cached 1.txt
diff --git a/1.txt b/1.txt
index 9a71f81..478d5b1 100644
--- a/1.txt
+++ b/1.txt
@@ -1,2 +1,2 @@hello world
-
+update workspace

6.4. 工作空间与版本库

# 指定要比较的版本号
$ git diff HEAD 1.txtdiff --git a/1.txt b/1.txt
index 9a71f81..f0bc050 100644
--- a/1.txt
+++ b/1.txt
@@ -1,2 +1,4 @@hello world
+update workspace+xxixixix

6.5. 版本库与版本库

# 指定要比较的两个版本号
$ git diff HEAD HEAD^
diff --git a/1.txt b/1.txt
index 478d5b1..9a71f81 100644
--- a/1.txt
+++ b/1.txt
@@ -1,2 +1,2 @@hello world
-update workspace
+

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

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

相关文章

PMAC与Modbus主站进行Modbus Tcp通讯

PMAC与Modbus主站进行Modbus Tcp通讯 创建modbus通讯参数 在项目的PMAC Script Language\Global Includes下创建一个名为00_Modbus_Para.pmh的pmh文件。 Modbus[0].Config.ServerPort 0 Modbus[0].Config.ConnectTimeOut 6000 Modbus[0].Config.SendRecvTimeOut 0 Modbu…

WPF数据绑定

数据绑定是一个很强大且优雅的技能,之前用过好多次,但有些地方总不是特别清晰,常常需要重新翻阅资料来回顾,于是这次用了几天时间好好梳理一下,记录一下。 首先数据绑定对数据对象的要求:需要是公有属性&a…

基于Visual studio创建API项目

API(英文全称:Application Programming Interface,中文:应用程序编程接口) 为什么要 通过API接口可以与其他软件实现数据相互通信,API这项技术能够提高开发效率。 本文是基于vs2017 .net平台搭建API。希望可以帮助到学…

leetcode做题笔记110. 平衡二叉树

给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 思路一:递归 int height(struct TreeNode* root) {if (root NULL) {return…

HBase--技术文档--基本概念--《快速扫盲》

官网 Apache HBase – Apache HBase™ Home 阿里云hbase 云数据库HBase_大数据存储_订单风控_数据库-阿里云 云数据库 HBase-阿里云帮助中心 基本概念 HBase是一种分布式、可扩展、支持海量数据存储的NoSQL数据库。它基于Hadoop,采用列式存储方式,可…

DPLL 算法之分裂策略

前言 DPLL算法确实是基于树(或二叉树)的回溯搜索算法,它用于解决布尔可满足性问题(SAT问题)。下面我会分析您提到的DPLL算法中的分裂策略,以及它是如何在搜索过程中起作用的。 DPLL算法中的分裂策略是用于在…

使用 Ansible 管理软件包(Yum 和 Apt )

Ansible 是一种强大而受欢迎的自动化工具,可用于管理和配置大规模服务器环境。在本文中,我们将探讨如何使用 Ansible 来管理 Yum(适用于 CentOS、Red Hat 和 Fedora)和 Apt(适用于 Debian 和 Ubuntu)软件包…

前端面试话术集锦第一篇

🚗前端面试集锦目录 💖前端面试话术集锦第一篇💖 💖前端面试话术集锦第二篇💖 文章目录 1. 前端需要注意哪些SEO2. \<img>的title和alt有什么区别3. HTTP的⼏种请求⽅法⽤途4. 从浏览器地址栏输⼊url到显示⻚⾯的步骤5. 如何进⾏⽹站性能优化6. HTTP状态码及其…

【conda install】网络慢导致报错CondaHTTPError: HTTP 000 CONNECTION FAILED for url

⭐⭐问题&#xff1a; 部署安装环境经常会出现由于网络慢问题&#xff0c;导致conda安装不了库&#xff0c;报错如下&#xff1a; Solving environment: failedCondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/…

【Spring Boot】数据库持久层框架MyBatis — Spring Boot构建MyBatis应用程序

Spring Boot构建MyBatis应用程序 Spring Boot是用于快速构建Spring应用程序的框架。MyBatis是一种Java持久化框架&#xff0c;可以帮助开发人员轻松地管理数据库。将Spring Boot与MyBatis结合使用可以使开发人员更容易地创建和管理数据库应用程序。 以下是使用Spring Boot构建…

海康威视相机-LINUX SDK 开发

硬件与环境 相机&#xff1a; MV-CS020-10GC 系统&#xff1a;UBUNTU 22.04 语言&#xff1a;C 工具&#xff1a;cmake 海康官网下载SDK 运行下面的命令进行安装 sudo dpkg -i MVSXXX.deb安装完成后从在/opt/MVS 路径下就有了相关的库&#xff0c;实际上我们开发的时候只需要…

vue实现导出excel的多种方式

在Vue中实现导出Excel有多种方式&#xff0c;可以通过前端实现&#xff0c;也可以通过前后端配合实现。下面将详细介绍几种常用的实现方式。 1. 前端实现方式&#xff1a; 使用xlsx库&#xff1a;使用xlsx库可以在前端将数据导出为Excel文件。首先需要安装xlsx库&#xff0c;…

关于c#:BindingProxy:绑定到索引属性

我有一个BindingProxy将DataGrid的DataGridColumns的可视性-属性绑定到字典中的值(" ColumnsVisibility")。我也有一个上下文菜单&#xff0c;它应该可以隐藏/显示网格的列。 <DataGrid Name"dgMachines"ItemsSource"{Binding HVMachineList,Upda…

肯德尔秩相关系数(Kendall‘s Tau)排名

肯德尔秩相关系数&#xff08;Kendall’s Tau&#xff09;是一种用于衡量两个排列之间相似性的统计指标&#xff0c;它考虑了元素之间的顺序关系而不考虑具体数值。该系数被广泛用于排序、排名和比较不同实验结果的相关性等领域。 具体而言&#xff0c;肯德尔秩相关系数衡量了…

AUTOSAR从入门到精通-【应用篇】基于嵌入式实时Linux及AUTOSAR的跨平台技术研究与实现

目录 前言 通用实时操作系统的国内外研究现状 AUTOSAR国内外研究现状 实时操作系统的选择

专业制造一体化ERP系统,专注于制造工厂生产管理信息化,可定制-亿发

制造业是国民经济的支柱产业&#xff0c;对于经济发展和竞争力至关重要。在数字化和智能化趋势的推动下&#xff0c;制造业正处于升级的关键时期。而ERP系统&#xff0c;即企业资源计划系统&#xff0c;能够将企业的各个业务环节整合起来&#xff0c;实现资源的有效管理和信息的…

攻击与防御实战经验分享:分析真实的攻击事件和入侵行为,讨论防御方法和实践经验

章节 1: 前言 作为IT领域的从业者&#xff0c;我们时刻都面临着网络安全的挑战。攻击者不断寻找漏洞&#xff0c;而防御者则需要时刻保持警惕&#xff0c;采取最佳实践来保护系统和数据。在本文中&#xff0c;我们将分享一些真实的攻击事件和入侵行为&#xff0c;并探讨针对这…

LInux之chrony服务器

目录 场景 重要性 LInux的两个时钟 硬件时钟 系统时钟 NTP协议 Chrony介绍 定义 组成 --- chronyd和chronyc 安装与配置 安装 Chrony配置文件分析 同步时间服务器 chronyc命令 chronyc sources输出分析 其它命令 查看时间服务器的状态 查看时间服务器是否在线 …

大数据技术概述(三)——编程语言的选择

文章目录 1.6编程语言的选择1.6.1java和Scala1.6.2Python1.6.3SQL 1.6编程语言的选择 大数据编程一般会使用Java、Scala和python等编程语言&#xff0c;Flink目前也支持上述3种语言。 1.6.1java和Scala Java支持多线程&#xff0c;其生态圈中可用的第三方库众多。Java虚拟机…

如何解决索引分裂问题?

索引分裂 索引块快写满时就会发生索引分裂&#xff0c;索引分裂分为两种情况&#xff0c;55和91&#xff1a; 索引分裂和enq: TX - index contension等待事件的区别 无论是55还是91&#xff0c;都是数据增多后索引的正常行为&#xff0c;索引分裂是业务数据量增大导致索引增大…