004、Git初始化:创建你的第一个本地仓库
昨天帮实习生调试代码,发现他的项目目录里散落着十几个以“_final”“_new”“_backup”结尾的文件夹。问他为什么不用Git,他挠头说:“配置太麻烦,感觉用不上。”这场景让我想起自己刚入行时,也总觉得版本控制是“大项目才需要的东西”。直到某次误删了三天的工作成果,才真正明白:Git不是可选项,而是开发生涯的氧气面罩。
仓库初始化的本质
很多人以为git init只是创建一个.git隐藏文件夹,其实远不止如此。这个命令实际上构建了一个完整的版本管理生态系统——对象数据库、引用系统、钩子框架都在这一刻悄然建立。就像盖房子打地基,你看不到它,但它决定了整个建筑能盖多高。
实战:从零创建仓库
打开终端,进入你的项目目录。如果你还没有项目,随便创建一个目录练手:
mkdirmy_project&&cdmy_project现在执行初始化命令:
gitinit你会看到这样的输出:
Initialized empty Git repository in /path/to/your/project/.git/关键细节:这个命令会在当前目录创建.git子目录,里面包含了Git的所有核心组件。别手贱去删这个文件夹,除非你想重新开始——这里我踩过坑,删了之后版本历史就全丢了。
检查初始化状态
初始化后立即检查状态是个好习惯:
gitstatus如果看到“On branch master”和“nothing to commit”,说明仓库已经就绪但完全是空的。这时候的仓库就像刚格式化的硬盘,有文件系统但没数据。
第一个提交的陷阱
新手常犯的错误是直接git add .然后提交:
echo"# My Project">README.mdgitadd.gitcommit-m"Initial commit"停!这里有个坑:git add .会把当前目录所有文件都加进去,包括那些编译生成的临时文件、IDE配置文件。等你发现时,仓库里已经塞满了垃圾。
更专业的做法是先创建.gitignore文件:
# 先忽略常见垃圾文件echo"*.log">>.gitignoreecho"node_modules/">>.gitignoreecho".DS_Store">>.gitignore# 再添加真正需要跟踪的文件gitaddREADME.md .gitignoregitcommit-m"feat: initial project structure"注意我用了“feat:”前缀,这是约定式提交的写法,后面章节会详细讲。养成好习惯要从第一次提交开始。
仓库配置的隐藏关卡
初始化后还有几个配置项直接影响后续体验。全局配置一般在~/.gitconfig,但项目特定的配置更值得关注:
# 设置提交者信息(每个仓库都要配,别偷懒)gitconfig user.name"你的名字"gitconfig user.email"你的邮箱"# 设置默认编辑器为VSCode(如果你用VSCode)gitconfig core.editor"code --wait"# 开启颜色显示,输出更友好gitconfig color.ui auto特别提醒:邮箱一定要用真实有效的,很多公司用这个关联代码贡献。别写个“test@test.com”,等需要找回密码时就傻眼了。
裸仓库:另一种初始化方式
偶尔你会看到这样的命令:
gitinit--baremy_project.git这种叫“裸仓库”,没有工作目录,专门用于共享。你在GitHub上克隆的就是这种仓库。个人开发用不上,但搭建内部Git服务器时会用到。知道有这么个东西就行,别在本地项目里用--bare,不然你会发现没法写代码了。
个人经验:初始化后的第一件事
我每个新仓库初始化后,会做三件事:
立即创建
.gitignore:用git status检查有没有不该跟踪的文件,有就加到忽略列表。网上有各种语言的.gitignore模板,但最好自己维护一个公司通用的。设置分支命名:新版本Git默认分支叫
main,老版本叫master。用git branch -M main可以改名。和团队保持一致很重要,不然推送时会遇到分支不匹配的警告。创建README和基础结构:哪怕只是项目骨架,也要有基本的文档结构。这就像装修房子先布线,后面添家具才方便。
最后说个真事:我曾见过有人把整个node_modules提交到仓库,仓库大小暴涨到2GB,克隆一次要半小时。初始化时多花五分钟,能省下后面无数小时的调试和清理时间。Git仓库就像你的代码日记,从第一页就要写得干净整洁。