【Git学习】Git本地仓库基础命令

Git命令

首先需要创建版本库,在某个目录下新建一个testGit版本库,右键通过命令行的方式打开窗口

通过命令 git init 把这个目录变成git可以管理的仓库

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

这时候当前testgit目录下会多了一个.git的目录,这个目录是Git来跟踪管理版本的,.git里面内容如下:

创建文件 test.txt 文件,此刻文件在工作区(WorkSpace)

通过 git status 可以查看文件追踪的情况,红色表示在工作区

使用命令 git add test.txt 添加到暂存区去

如果要提交多个文件,在add后面指定文件的列表 git add test1.txt test2.txt

一次提交多个文件至暂存区:

git add -A 提交所有变化至暂存区

git add -u 提交被修改和被删除文件,不包括新文件至暂存区

git add . 提交新文件和被修改文件,不包括被删除文件至暂存区,因为删除操作不进工作区直接进入暂存区

将文件撤销回至工作区

提交文件到主分支

git log 日志

修改操作会将文件退回到工作区

提交到仓库后查看日志和内容

git log --pretty=oneline 精简日志

回退到上一个版本 git reset --hard HEAD^ ,那么如果要回退到上上个版本只需把HEAD^ 改成 HEAD^^ 以此类推

通过sha1的前四位来做回退,git reset --hard 版本号

删除文件命令 git rm test2.txt,发现文件直接进入暂存区

如果想彻底从版本库中删掉了此文件的话,再执行 commit 命令提交

diff 命令

比较工作目录与暂存区 $ git diff

查看文件在工作目录与暂存区的差别,如果还没 add 进暂存区,则查看文件自身修改前后的差别。查看和另一分支的区别 $ git diff

比较暂存区与Git仓库 git diff --cached

表示查看已经 add 进暂存区但是尚未 commit 的内容同最新一次 commit 时的内容的差异。 也可以指定仓库版本 git diff --cached

工作目录 vs Git仓库 git diff

查看工作目录同Git仓库指定 commit 的内容的差异。=HEAD 时查看工作目录同最近一次 commit 的内容的差异。

Git仓库 vs Git仓库 git diff

Git仓库任意两次 commit 之间的差别。

以上命令可以不指定 filename,则对全部文件操作。以上命令涉及和 Git仓库对比的,均可指定 commit 的版本。

配置级别

在git中,我们使用 git config 命令用来配置git的配置文件,git配置级别主要有以下三类:

1、仓库级别 local 【优先级最高】

2、用户级别 global【优先级次之】

3、系统级别 system【优先级最低】

git 仓库级别对应的配置文件是当前仓库下的.git/config

在提示符中输入以下查看配置信息 git config --local -l

git 用户级别对应的配置文件是用户宿主目录下的 ~/.gitconfig

git config --global -l

git系统级别对应的配置文件是git安装目录下的 /etc/gitconfig

git config --system -l

演示修改用户名和邮箱,注意不要手动修改每个级别的配置文件,要使用命令的形式:

git config --global user.name "renliang"

git config --global user.email "renliang@126.com"

对于git来说,配置文件的权重是仓库>全局>系统。Git会使用这一系列的配置文件来存储用户定义的偏好,它首先会查找/etc/gitconfig文件(系统级),该文件含有对系统上所有用户及他们所拥有的仓库都生效的配置值。接下来Git会查找每个用户的~/.gitconfig文件(全局级)。最后Git会查找由用户定义的各个库中Git目录下的配置文件.git/config(仓库级),该文件中的值只对当前所属仓库有效。

.gitignore文件

在使用git的过程中,一般我们总会有些文件无需纳入git的管理,也不希望它们总出现在未跟踪文件列表,这些文件通常是日志文件、临时文件、编译产生的中间文件、工具自动生成的文件等等。

此时我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式,Git会根据这些模式规则来判断是否将文件添加到版本控制中。

注意:在windows下可以创建文件名为.gitignore.,保存之后系统会自动重命名为 .gitignore

格式规范

(1)所有空行或者以注释符号 # 开头的行都会被 Git 忽略

(2)可以使用标准的 glob 模式匹配

(3)匹配模式最后跟斜杠(/)说明要忽略的是目录

(4)要忽略指定模式以外的文件或目录,可以在模式前加上感叹号(!)进行取反

glob模式

所谓的 glob 模式是指 shell 所使用的简化了的正则表达式,匹配规则如下:

"*":星号匹配零个或多个任意字符

\[\]:匹配任何一个列在方括号中的字符,如ab匹配a或者匹配b

"?":问号匹配一个任意字符

n-m:匹配所有在这两个字符范围内的字符,如0-9表示匹配所有0到9的数字

匹配示例

logs/: 忽略当前路径下的logs目录,包含logs下的所有子目录和文件

/logs.txt: 忽略根目录下的logs.txt文件

*.class: 忽略所有后缀为.class的文件

!/classes/a.class:不忽略classes目录下的a.class文件

tmp/*.txt: 只忽略tmp目录下的.txt文件

**/foo: 可以忽略/foo, a/foo, a/b/foo等

在需要创建 .gitignore 文件的文件夹右键选择Git Bash 进入命令行,进入项目所在目录输入 touch .gitignore,那么在文件夹就生成了一个".gitignore"文件

打开这个文件进行编辑,写规则来操作要忽略的文件

创建 Hello.java 文件,查看状态不在工作区,提交也不会进入暂存区

除了可以在项目中定义.gitignore文件外,还可以设置全局的.gitignore文件来管理所有Git项目的行为,这种方式在不同的项目开发者之间是不共享的,是属于项目之上Git应用级别的行为。

配置方式:可以在任意目录下创建相应的.gitignore文件,然后再使用以下命令配置Git

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

gitignore规则不生效

.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的,所以一定要养成在项目开始就创建.gitignore文件的习惯。

相关推荐
我先去打把游戏先20 分钟前
Ubuntu虚拟机(服务器版本)Git卸载完全教程——彻底移除与清理配置
服务器·git·单片机·嵌入式硬件·物联网·ubuntu·51单片机
川石课堂软件测试38 分钟前
零基础小白如何学习自动化测试
python·功能测试·学习·测试工具·jmeter·压力测试·harmonyos
2301_809051141 小时前
Linux 数据库开发 学习笔记
笔记·学习·数据库开发
爱喝水的鱼丶1 小时前
SAP-ABAP:SAP 简单报表输出开发系列(共6篇)第三篇:SAP ALV 报表样式定制:字段布局与交互功能配置
服务器·开发语言·学习·交互·sap·abap
很楠爱上1 小时前
Node.js 模块化学习笔记
笔记·学习·node.js
毕竟是shy哥1 小时前
CLIP:从自然语言监督中学习可迁移的视觉模型
学习
川石课堂软件测试1 小时前
作为一名测试工程师如何学习Kubernetes(k8s)技能
学习·测试工具·容器·职场和发展·kubernetes·测试用例·harmonyos
tryqaaa_2 小时前
学习日志(五)【php反序列化全加例题】【pop链,字符逃逸,session,伪协议】
android·学习·php·web·pop·session
不做无法实现的梦~2 小时前
Git Clone 使用 Watt/Steam++ 加速时报证书错误的原因与解决方法
大数据·git·elasticsearch
li星野2 小时前
FastAPI 参数详解:路径参数、查询参数与请求体 —— 从入门到实战
服务器·学习·fastapi