git入门

Git架构

在任何当前工作的 Git 仓库中,每个文件都是这样的:

  • 追踪的(tracked)-:这些是 Git 所知道的所有文件或目录。这些是新添加(用 git add 添加)和提交(用 git commit 提交)到主仓库的文件和目录。
  • 未被追踪的(untracked) :这些是在工作目录中创建的,但还没有被暂存(或用 git add 命令添加)的任何新文件或目录。
  • 被忽略的(ignored):这些是 Git 知道的要全部排除、忽略或在 Git 仓库中不需要注意的所有文件或目录。本质上,这是一种告诉 Git 哪些未被追踪的文件应该保持不被追踪并且永远不会被提交的方法。

查看Git本地配置

设置账号,密码

1
2
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

.gitignore详解

所有被忽略的文件都会被保存在一个 .gitignore 文件中;

.gitignore 文件是一个纯文本文件,包含了项目中所有指定的文件和文件夹的列表,这些文件和文件夹是 Git 应该忽略和不追踪的;

一个 .gitignore 文件会被放在仓库的根目录下,也可以放在仓库的任何文件夹下,一个仓库可以有多个.gitignore;

名字前面有点(.)的文件默认是隐藏的;

为什么要忽略某些文件上传?

忽略某些文件上传是因为这些文件通常是本地环境特有的,或者是没有必要被版本控制的文件。以下是一些常见的原因:

  • 本地配置文件:开发者的本地配置文件(如编辑器配置、环境变量配置等)通常因人而异,不应该上传到公共仓库。
  • 编译或生成的文件:编译生成的文件(如*.class文件、dist/目录等)可以通过源代码重新生成,上传它们既浪费空间,也会让仓库变得臃肿。
  • 敏感信息:如API密钥、数据库密码等敏感信息不应该上传到公共仓库,以防泄露。
  • 依赖库:如node_modules/vendor/等第三方依赖库不需要放在版本控制系统中,通常会通过包管理工具(如npm、composer等)自动下载和安装。
  • 日志文件和临时文件:如*.log文件、*.tmp文件等,是开发过程中的临时数据,不需要上传到仓库中。

什么文件应该被忽略?

根据项目类型和开发环境,以下是一些常见的需要忽略的文件和目录:

  • 操作系统生成的文件
    • .DS_Store(macOS)
    • Thumbs.db(Windows)
  • 依赖库和包
    • node_modules/(Node.js)
    • vendor/(PHP Composer)
    • Pods/(iOS Cocoapods)
  • 编译输出文件
    • *.class(Java)
    • *.o, *.so(C/C++)
    • dist/, build/(前端项目)
  • 环境配置文件
    • .env
    • *.local(环境特定的配置)
  • IDE和编辑器生成的文件
    • .vscode/, .idea/
    • *.suo, *.user(Visual Studio)
  • 日志文件
    • *.log
  • 其他临时文件
    • *.tmp
    • *.swp(Vim)
    • *.bak(备份文件)

.gitignore中格式是怎样的?

.gitignore 文件的格式简单且灵活。以下是一些常见的规则:

  • 每行一个模式,表示要忽略的文件或目录。
  • 可以使用通配符 * 来匹配任意字符。
  • # 用于注释说明,不会影响规则。
  • 以斜杠 / 结尾表示目录。
  • 可以使用 ! 前缀来否定一个忽略规则。
  • 可以指定文件的完整路径或使用相对路径。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 忽略所有 .log 文件
*.log

# 忽略目录
node_modules/
dist/

# 忽略特定文件
config/database.yml

# 忽略所有的 .env 文件,但不忽略 .env.example
.env
!.env.example

# 忽略 IDE 生成的文件夹
.idea/
.vscode/

# 忽略系统生成的文件
.DS_Store
Thumbs.db