首页/开发/Git 与协作速查/git init 初始化仓库
Git 基础与命令88 条

git init 初始化仓库

在当前目录创建 Git 仓库:生成 .git 目录与初始配置;-b 可指定初始分支名,也可用 init.defaultBranch 设定默认值。

Git 与协作速查开发更新于 2026-10-13

git init 是什么

git init 在当前目录创建 Git 仓库:生成 .git 目录用于存放对象库、引用与仓库级配置,并给出初始分支。它不会下载任何远端内容,也不会自动提交文件,只是把普通目录变成可被 Git 管理的目录。要同时关联远端,需要再执行 git remote add。

初始分支名从哪来

初始分支默认是 master,Git 2.28 起可以用 -b 指定,也可以通过 init.defaultBranch 配置默认值。已经有 .git 的目录重复执行 init 不会清空历史,它只是重新应用一遍仓库配置,所以不能用它来「重置」仓库。

基本信息

适用平台Linux / macOS / Windows(Git 2.28 起支持 -b)
语法git init [-b <分支名>] [目录]
产物.git 目录与仓库级配置
默认分支由 -b 或 init.defaultBranch 决定
是否联网不联网,不取任何远端数据

典型使用场景

  • 新项目落地:本地代码从这一刻开始纳入版本控制
  • 空仓库打底:先用 init 建仓库,再 remote add 关联远端
  • 统一初始分支:用 init.defaultBranch 让新仓库默认叫 main
  • 裸仓库:用 --bare 建不带工作区的仓库,适合做中央仓库
  • 确认位置:动手前判断自己是否已经在某个仓库内部

常用示例

常用示例
git init                        # 在当前目录初始化仓库
git init -b main myrepo         # 指定初始分支名并新建目录
git init --bare share.git       # 建裸仓库,用作中央仓库
git config --global init.defaultBranch main   # 新仓库默认用 main
git rev-parse --show-toplevel   # 确认自己处在哪个仓库里
git remote add origin <仓库地址> # 初始化后关联远端

初始化后先做什么

步骤命令目的
确认位置git rev-parse --show-toplevel避免建在别人仓库里面
设置身份git config user.email让提交能归属到账号
写忽略规则编辑 .gitignore避免把产物与密钥提交上去
首次提交git add -A 后 commit建立第一个可回溯的版本
在已有仓库的子目录里执行 init 会新建一层仓库,形成嵌套。动手前用 git rev-parse --show-toplevel 确认自己所在的位置。
Git 2.28 之前不支持 -b。可以先 init,再用 git symbolic-ref HEAD refs/heads/main 把当前分支调整成想要的名字。
裸仓库没有工作区,不能直接在里面修改文件,它的用途是充当团队共享的中央仓库或镜像源;成员日常的编辑与提交仍然发生在各自的普通克隆里。
保留目录结构但要重新开始历史时,需要删掉 .git 再重新 init,这一步会永久丢弃原有提交记录,动手前确认没有需要保留的历史。

易错点

  • 在已有仓库的子目录里 init 会形成嵌套仓库,提交时外层可能把内层当成普通目录收录
  • 重复执行 init 不会重置历史,只会重新应用仓库配置,别指望它清理仓库
  • Git 2.28 之前不支持 -b,需要改用 git symbolic-ref HEAD 调整分支名
  • 初始分支名与远端默认分支不一致时,首次推送容易产生两条并行的主分支

数据来源与参考

  • Git 官方文档:git-init
  • Pro Git 2nd Edition · 2.1 取得 Git 仓库
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌