Git 配置 / 初始化 / 克隆
更新时间:2026-08-25。本篇覆盖三个"开场"命令:
git config(环境配置)、git init(创建仓库)、git clone(获取远程仓库)。
1. git config:身份与行为
配置级别(三份配置文件)
| 级别 | 文件位置 | 生效范围 | 优先级 |
|---|---|---|---|
--system | /etc/gitconfig | 整台机器所有用户 | 最低 |
--global | ~/.gitconfig | 当前用户所有仓库 | 中 |
--local | <repo>/.git/config | 当前仓库 | 最高 |
bash
git config --global user.name "Your Name"
git config --global user.email "you@example.com"
git config --list # 查看所有生效配置
git config --global --edit # 用编辑器打开全局配置提交作者信息是硬要求:没有
user.name/user.email时git commit会直接拒绝执行。
高频配置项
bash
git config --global init.defaultBranch main # 默认分支名(替代 master)
git config --global core.autocrlf input # Linux/macOS 防 CRLF 污染
git config --global pull.rebase true # pull 默认用 rebase 而非 merge
git config --global push.default simple # 只推送当前分支到同名上游
git config --global alias.co checkout # 别名:git co
git config --global alias.st status # 别名:git st
git config --global alias.lg "log --oneline --graph --all"
git config --global core.pager '' # 禁用分页(脚本场景)别名是提效利器:alias 本质是给子命令起短名,可用 ! 前缀写 shell 脚本,如 alias.unstage = "reset HEAD --"。
2. git init:创建仓库
bash
git init # 在当前目录创建 .git
git init <dir> # 在指定目录创建
git init --bare <name> # 创建裸仓库(仅用于服务器共享,无工作区)
git init -b main # 初始化时即设定默认分支名裸仓库 vs 普通仓库:裸仓库没有工作区,只存 .git 内容,是团队共享仓库的标准形态(对应 GitHub 上托管的就是裸仓库)。日常开发中不会在裸仓库里直接操作文件。
3. git clone:获取远程仓库
bash
git clone <url> # 克隆到当前目录下的同名目录
git clone <url> <dir> # 克隆到指定目录
git clone --depth 1 <url> # 浅克隆:只取最新提交(大仓库加速)
git clone --branch v1.0 <url> # 只克隆指定分支/标签
git clone --single-branch <url> # 只拉取默认分支三种常见 URL 协议
| 协议 | 示例 | 特点 |
|---|---|---|
| HTTPS | https://github.com/user/repo.git | 通用,需凭证(可配 credential helper) |
| SSH | git@github.com:user/repo.git | 免密(配好密钥后),推荐 |
| 本地路径 | /path/to/repo.git | 局域网/同机协作 |
克隆后自带"远程跟踪分支":git clone 会自动配置 origin 远端,并把远端默认分支记录为本地 main 的上游,同时建立 origin/main 远程跟踪分支——这是后面 远程协作 的基础。
对比:init vs clone
| 维度 | git init | git clone |
|---|---|---|
| 场景 | 本地从零开始 | 从已有远端开始 |
| 是否配置远端 | 否(需手动 git remote add) | 自动配置 origin |
| 历史 | 空仓库 | 完整/浅历史 |
| 常见配合 | init → add → commit → remote add → push | 直接开干 |
易错点
- 克隆了但没配身份:提交时被拒,先
git config --global user.*。 - 把仓库克隆进已有仓库:嵌套
.git会导致内层仓库文件被视为外层仓库的子目录,推错仓。克隆前确认目标目录是干净的。 - 浅克隆带来的"幽灵分支":
--depth 1的仓库执行git pull拉新历史时可能报"shallow update not allowed",需git fetch --unshallow补全。 git init --bare误用于日常:服务器共享用裸仓库,个人开发用普通仓库,别搞反。
一句话总结:config 定身份与习惯、init 从零建仓、clone 从远端拿代码——三者是任何 Git 工作流的起点,配好身份与别名能省下大量重复操作。