Git学习(三)

一、gitignore文件

在使用git的过程中,一般我们总会有些文件无需纳入git的管理,也不希望它们总出现在未跟踪文件列表,这些文件通常是日志文件、临时文件、编译产生的中间文件、工具自动生成的文件等等。
此时我们可以创建一个名为 .gitignore 的文件,列出要忽略的文件模式,Git会根据这些模式规则来判断是否将文件添加到版本控制中。
注意:在windows下可以创建文件名为.gitignore.,保存之后系统会自动重命名为 .gitignore

1.格式规范

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

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

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

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

2.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等

3.案例使用

3.1 在需要创建 .gitignore 文件的文件夹, 右键选择Git Bash 进入命令行,进入项目所在目录。

3.2输入 touch .gitignore 在文件夹就生成了一个".gitignore"文件

3.3对文件编辑,写规则来操作要忽略的文件了

.gitignore内容

3.4上传版本库

创建新文件

被屏蔽,不存在工作区

4.定义全局的.gitignore

除了可以在项目中定义.gitignore文件外,还可以设置全局的.gitignore文件来管理所有Git项目的行为。

这种方式在不同的项目开发者之间是不共享的,是属于项目之上Git应用级别的行为。

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

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

**5.**gitignore规则不生效

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

二、diff命令

1.工作目录 vs 暂存区

$ git diff <filename>

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

$ git diff <branch> <filename>

2.暂存区 vs Git 仓库

git diff --cached <filename>

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

git diff --cached <commit> <filename>

3.工作目录 vs Git 仓库

git diff <commit> <filename>

同理......

意义:查看工作目录同Git仓库指定 commit 的内容的差异。

<commit>=HEAD 时:查看工作目录同最近一次 commit 的内容的差异。

4.Git 仓库 vs Git 仓库

git diff <commit> <commit>

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

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

HEAD 最近一次 commit

HEAD^ 上次提交

HEAD~100 上100次提交

相关推荐
爱吃龙利鱼10 小时前
ubuntu2026.04部署k8s1.36版本的傻瓜式教程(注:运行时为docker,网络插件为calico)
运维·网络·笔记·docker·云原生·kubernetes
一只大袋鼠10 小时前
SpringBoot 入门学习笔记(二)Web 开发基础
spring boot·笔记·学习
知识分享小能手10 小时前
Flask入门学习教程,从入门到精通, Flask模板 — 完整知识点与案例代码 (3)
python·学习·flask
kgduu10 小时前
ethers.js学习笔记
javascript·笔记·学习
星幻元宇VR11 小时前
VR国防教育学习机:沉浸式国防教育新模式
科技·学习·安全·vr·虚拟现实
老花眼猫11 小时前
数学艺术图案画-曼陀罗单色版(1)
c语言·经验分享·青少年编程·课程设计
罗超驿11 小时前
1.JavaEE初阶学习安排+介绍计算机是如何工作的
java·学习·java-ee
会编程的土豆11 小时前
Docker 日常操作笔记(开发最常用命令)
笔记·docker·容器
05候补工程师11 小时前
【考研英语一·翻译专攻】长难句翻译的“分治策略”:从底层拆分到逻辑重构(1997-2010真题高频陷阱与红笔纠偏)
经验分享·笔记·考研·重构