Git 安装、配置与仓库初始化
在开始使用 Git 之前,需要先完成安装、基础配置,并了解如何创建/克隆仓库以及排除不需要纳入版本控制的文件。本文汇总这三部分内容。
一、安装 Git
Windows
- 访问 Git for Windows 下载安装包(.exe)。
- 运行安装程序,按默认选项安装即可(推荐保留默认设置,如“Git from the command line and also from 3rd-party software”)。
- 安装完成后,可在开始菜单找到 Git Bash(推荐使用)或 Git CMD。
macOS
- 使用 Homebrew(推荐):bash
brew install git - 或下载官方安装包:https://git-scm.com/download/mac
Linux
- Ubuntu / Debian:bash
sudo apt update sudo apt install git - CentOS / RHEL:bash
sudo yum install git # CentOS 7 sudo dnf install git # CentOS 8+
验证安装成功:
git --version
二、初次配置(必须)
Git 需要知道你是谁,以便在提交时记录作者信息。使用 git config 命令进行全局配置:
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
--global表示全局配置,作用于当前用户的所有仓库。如果去掉--global,则仅对当前仓库生效。- 请用真实姓名和邮箱,建议与 GitHub/GitLab 等托管平台保持一致。
三、常用配置
1. 查看所有配置
git config --list # 查看全部配置
git config --global --list # 查看全局配置
2. 设置默认编辑器
例如将编辑器设置为 VSCode:
git config --global core.editor "code --wait"
其他示例:"vim"、"nano"、"subl -w" 等。
3. 设置别名(简化命令)
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"
之后可以使用:
git co <branch> # 等价于 git checkout
git lg # 查看漂亮的提交图
4. 设置大小写敏感(推荐 true)
在 macOS/Windows 上,文件系统默认大小写不敏感,可能导致 Git 误判。建议开启:
git config --global core.ignorecase false
5. 其他实用配置
| 配置项 | 命令 | 说明 |
|---|---|---|
| 彩色输出(默认已开启) | git config --global color.ui auto | 终端输出高亮 |
| pull 默认行为 | git config --global pull.rebase true | 推荐使用 rebase 避免不必要的合并提交 |
| 记住密码 | git config --global credential.helper cache | 缓存凭据一段时间 |
| 记住密码(自定义时长) | git config --global credential.helper 'cache --timeout=3600' | 缓存 1 小时(3600 秒) |
6. 配置文件位置
- 全局配置:
~/.gitconfig或~/.config/git/config - 仓库配置:当前仓库的
.git/config
可以直接编辑这些文件来修改配置,也可以使用 git config 命令。
7. 验证配置
git config user.name
git config user.email
如果输出正确,说明配置成功。
注意:完成上述步骤后,才可以开始使用 Git 进行正式的版本控制工作;否则提交记录中的作者信息会缺失或使用系统默认值。
四、创建与克隆仓库
Git 仓库是进行版本控制的基础。你可以初始化一个全新的本地仓库,或者克隆一个已有的远程仓库到本地。
1. 初始化新仓库(git init)
在项目根目录执行以下命令,会在当前目录下创建一个隐藏的 .git 文件夹(该文件夹包含了所有版本历史、分支信息等)。
git init
- 初始化后,该目录即成为 Git 仓库,但尚未有任何提交(
git status会提示“Initial commit”)。 - 如果需要在指定目录创建仓库,可加上路径:
git init my-project(会自动创建该目录)。
示例:
mkdir my-app
cd my-app
git init
此时可以添加文件、进行首次提交。
2. 克隆远程仓库(git clone)
从远程服务器(如 GitHub、GitLab、Gitee)复制一个完整的仓库到本地,包括所有历史记录、分支和标签。
基本克隆
git clone <repository-url>
- 会在当前目录下创建一个与远程仓库同名的文件夹,并将远程仓库的所有文件、版本历史下载下来。
克隆到指定目录
git clone <repository-url> my-folder
- 将仓库克隆到
my-folder目录(若目录不存在则创建)。
克隆指定分支
git clone -b <branch-name> <repository-url>
- 例如:
git clone -b develop https://github.com/user/repo.git - 仅克隆指定分支(但依然会包含其他分支的元数据,默认检出该分支)。
浅克隆(只获取最新提交,节省时间)
git clone --depth 1 <repository-url>
- 限制克隆历史深度为 1,适用于只需要最新代码而不需要完整历史的场景(如 CI 环境)。
3. 初始化 vs 克隆
| 场景 | 使用命令 | 结果 |
|---|---|---|
| 本地已有项目,想让 Git 管理 | git init | 创建 .git 目录,需要后续添加远程仓库(git remote add) |
| 从服务器拉取现有项目 | git clone | 自动创建 .git,并设置远程仓库链接(origin),自动检出默认分支 |
总结:git init 用于从零开始新建版本库,git clone 用于复制已有版本库(最常用的协作起点)。
五、忽略文件(.gitignore)
.gitignore 文件是 Git 项目中用来指定“哪些文件或目录不需要被 Git 管理”的配置文件。它就像一个过滤器,能帮助你避免将系统文件、依赖包、编译产物等无关内容提交到代码仓库,保持仓库的整洁和专注。
1. 工作原理
.gitignore 的核心是一系列文件或目录的匹配模式。其中,以 # 开头的行是注释,用于解释忽略规则。Git 会将这些模式与文件路径进行匹配,以决定是否将其忽略。
2. 文件位置与创建
.gitignore 文件通常放置在 Git 仓库的根目录下。你也可以在仓库的子目录中创建其副本,以对特定的代码子模块进行针对性忽略。
你可以通过以下方式创建它:在终端(Mac/Linux)使用 touch .gitignore 命令创建一个空文件,或者直接通过 IDE 或文本编辑器手动创建。
3. 编写格式与语法
基础模式
| 模式 | 作用 | 示例 | 说明 |
|---|---|---|---|
*.log | 匹配所有 .log 结尾的文件 | 忽略目录下所有日志文件 | 匹配任意位置的此类文件 |
temp/ | 匹配整个 temp 目录 | 忽略 temp 目录下的所有内容 | 以 / 结尾表示匹配目录 |
build/ | 匹配 build 目录 | 忽略构建输出目录 | 同上 |
secret.txt | 匹配特定文件 | 忽略某个单独的配置文件 | 匹配任意位置的同名文件 |
/debug.log | 匹配根目录下的 debug.log | 忽略项目根目录下的日志文件 | / 开头表示仅匹配根目录 |
docs/*.md | 匹配 docs 目录下的 Markdown 文件 | 忽略 docs 目录中的所有 .md 文件 | 星号 * 匹配目录内的一级文件 |
高级模式
- 匹配任意层级:
**/logs/debug.log能匹配logs/debug.log、build/logs/debug.log等任意位置的 debug 日志。 - 递归匹配目录:
logs/**/debug.log能匹配logs/debug.log、logs/monday/debug.log等深度不定的 debug 日志。 - 取反规则:使用
!来“例外”某些不符合主规则的特定文件或目录。text/* !/build # 忽略根目录下所有文件,但保留 build 目录注意:当你忽略一个父级目录后,对于其中文件的取反操作通常是无效的。
- 字符匹配:
?:匹配一个任意字符,如debug?.log可匹配debug1.log或debugA.log。[abc]:匹配方括号内的任意一个字符。[0-9]:匹配一个数字范围,如debug[0-9].log。
4. 全局 .gitignore(适用于所有项目)
对于操作系统(如 macOS 的 .DS_Store)或编辑器(如 .vscode/、.idea/)产生的、你希望在所有项目中都忽略的文件,可以配置一个全局的 .gitignore 文件。
配置步骤:
- 在用户主目录创建文件:bash
touch ~/.gitignore_global - 在其中加入通用规则:text
*~ .DS_Store .vscode/ .idea/ Thumbs.db - 告诉 Git 使用它:bash
git config --global core.excludesfile ~/.gitignore_global
5. 忽略已被跟踪的文件
如果某个文件已经被 Git 跟踪,再把它加入 .gitignore 是无效的。你需要先将其从 Git 的跟踪列表中移除(同时保留本地文件):
git rm --cached <file>
执行后,该文件会变成“未跟踪”状态,你的 .gitignore 规则便会生效。
6. 官方精选模板库
GitHub 官方提供了一个 .gitignore 模板集,几乎覆盖了所有主流编程语言、框架和操作系统。
- 官方仓库:github/gitignore
- 项目结构:仓库提供现成的模板,如
Python.gitignore、Node.gitignore等,下载后重命名并放到项目根目录即可。 - 在线创建:在 GitHub 网站上新建仓库时,选择
.gitignore下拉框并按需选取。 - 命令行获取:使用
curl直接下载:bashcurl -o .gitignore https://raw.githubusercontent.com/github/gitignore/main/Python.gitignore
7. 常用模式总结
| 模式 | 说明 | 示例 |
|---|---|---|
*.exe | 忽略所有 .exe 可执行文件 | 匹配任意位置的 .exe 文件 |
*.class | 忽略所有 .class 编译文件 | 匹配任意位置的 .class 文件(Java 编译产物) |
vendor/ | 忽略 PHP 依赖目录 | 忽略 vendor 目录下的所有 PHP 依赖包 |
.env | 忽略环境配置文件 | 忽略根目录下存储敏感信息的 .env 文件 |
.vscode/, .idea/ | 忽略 IDE 个人配置 | 忽略不同开发者本地的 IDE 配置差异 |
.DS_Store, Thumbs.db | 忽略操作系统生成的元文件 | 统一忽略 macOS 和 Windows 的预览缓存文件 |
dist/, build/ | 忽略构建输出目录 | 保持代码仓库干净,所有构建产物由生成系统处理 |
六、注意事项
- 安装完成后一定要先完成用户名/邮箱配置,否则提交记录会缺失作者信息。
- 克隆大型仓库时,若只需要最新代码,优先使用
--depth 1浅克隆节省时间和磁盘空间。 .gitignore只对未被跟踪的文件生效;已被跟踪的文件需先用git rm --cached移除跟踪后才会被忽略。- 建议将
.gitignore文件本身提交到仓库,统一团队规则;系统/编辑器相关的忽略规则放到全局.gitignore_global中,避免污染项目内的.gitignore。
参考文献
| 资料 | 说明 |
|---|---|
| Pro Git | 官方书 |
| Git 文档 | 命令 |
| github/gitignore | 官方模板库 |
| 运维导读 | 学习路径 |
相关文章
Git 分支、远程协作与标签管理
涵盖分支的创建、切换、合并与删除,远程仓库的管理、推送与拉取,以及标签(Tag)的创建、查看、推送与删除,是团队协作的核心内容。
Git 查看历史、撤销回退与冲突解决
涵盖 git log / git diff 查看提交历史与差异,commit --amend / reset / revert 的撤销与回退方式对比,以及合并、拉取、变基时冲突的产生原因与解决步骤。
Git 基础概念与命令速查
Git 是目前最流行的分布式版本控制系统。本文介绍工作区/暂存区/仓库等核心概念、文件状态流转,并附上日常开发最常用的命令速查表,适合入门学习与日常查阅。
Git 基础工作流与协作场景
涵盖日常文件级操作(状态查看、暂存、提交、撤销、删除、重命名)与团队协作中的常见场景示例(个人提交、功能分支开发、同步主分支、误提交撤销等)。
运维与协作导读
本目录覆盖日常开发运维中的 Git 版本控制、Docker 容器化与 Nginx 服务网关,与 工程化 · Git、部署相关 等章节互补,提供完整的十阶段学习路径。
Git 配置
版本控制常用 .gitignore(忽略不需纳入仓库的文件)与 .gitattributes(统一换行、diff、合并策略等)。见 工程化概览。
Series
git
4 / 5