【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.hqwc.cn/news/90189.html

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

相关文章

wxpython + cef 是优秀的 WebView 组件

CEF 即 (Chromium Embedded Framework);cef 是优秀的 WebView 组件。 pip install wxpython4.2 wxPython-4.2.0-cp37-cp37m-win_amd64.whl (18.0 MB) Successfully installed wxpython-4.2.0 pip install cefpython3 cefpython3-66.1-py2.py3-none-win_amd64.whl …

RK3399平台开发系列讲解(入门篇)内核模块详细加载/卸载过程

🚀返回专栏总目录 文章目录 一、 ko文件的文件格式二、内核模块加载过程三、内核模块卸载过程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍内核模块详细加载/卸载过程。 一、 ko文件的文件格式 “KO” 文件通常是指 Linux 内核模块文件,这些文件包含…

jmeter 性能测试工具的使用(Web性能测试)

1、下载 该软件不用安装,直接解压打开即可使用。 2、使用 这里就在win下进行,图形界面较为方便   在目录apache-jmeter-2.13\bin 下可以见到一个jmeter.bat文件,双击此文件,即看到JMeter控制面板。主界面如下: 3、创…

【c语言】输出n行按如下规律排列的数

题述:输出n行按如下规律排列的数 输入: 4(应该指的是n) 输出: 思路: 利用下标的规律求解,考察数组下标的灵活应用,我们可以看出数从1开始是斜着往下放的,那么我们如何利用两层for循环求解这道题&#xff…

使用Python构建网络爬虫:提取网页内容和图片资源

网络爬虫是一种自动获取网页内容的程序,它可以帮助我们高效地收集网络上的有价值信息。本文将介绍如何使用Python构建网络爬虫,提取网页内容和图片资源。   一、环境准备   1.安装Python环境   首先,确保您已经安装了Python环境。访问P…

多张图片转为pdf怎么弄?

多张图片转为pdf怎么弄?在网络传输过程中,为了避免图片格式文件出现差错,并确保图片的清晰度和色彩不因不同设备而有所改变,常见的做法是将图片转换为PDF格式。然而,当涉及到多张图片时,逐一转换将会变得相…

7.Redis-list

list list常用命令lpushlrangelpushxrpushrpushxlpop / rpoplindexlinsertllenlremltrimlset 阻塞版本命令blpop/brpop 总结内部编码应用场景使用redis作为消息队列 redis中的 list 是一个双端队列, list 相当于是数组或者顺序表。list 并非是一个简单的数组,而是更…

数据驱动的生活:探索未来七天生活指数API的应用

前言 随着科技的不断发展,数据已经成为我们生活中不可或缺的一部分。从社交媒体上的点赞和分享,到电子邮件和搜索引擎的历史记录,数据正在以前所未有的速度积累。而这些数据的利用不仅仅停留在社交媒体或商业领域,它们还可以为我…

natApp内网穿透工作原理

如图所示,用户启动内网穿透工具会将token传入natapp服务器与我们自己的主机建立一个类似于websocket的长链接,当从外网访问我们主机的接口时,会进行一个本地接口地址的截取,然后进行拼接成我们主机应用的真实地址。然后将数据返回…

利用 IDEA IDE 的轻量编辑模式快速查看和编辑工程外的文本文件

作为程序员, 我们都知道 IDE 的很好用的, 它的文本编辑器功能也非常的强大, 用起来非常便捷. 在长年累月的使用中, 我们也变得对其非常熟悉, 以致于使用起其它简单地轻量级的文本编辑器来, 比如什么记事本, Notepad, UltraEdit 等等呀, 觉得既不方便又不熟悉. 关键是很多的操作…

【Go 基础篇】Go语言结构体基本使用

在Go语言中,结构体是一种重要的数据类型,用于定义和组织一组不同类型的数据字段。结构体允许开发者创建自定义的复合数据类型,类似于其他编程语言中的类。本文将深入探讨Go语言中结构体的定义、初始化、嵌套、方法以及与其他语言的对比&#…

SQL Server 2019导入txt数据

1、选择导入数据 2、选择Flat file Source 选择文件,如果第一行不是列名,就不勾选。 3、下一步 可以看看数据是否是对的 4、下一步 选择SQL server Native Client 11,数据库选择导入进的库 输入连接数据库的名字和要导入的数据库 下一…