1. 问题场景
Git 已经装好了,现在手上有一个项目目录,里面有一堆代码文件。你想让 Git 开始管理这个项目,记录每一次修改,方便随时回溯。该怎么告诉 Git “这个目录归你管了”?这就引出了仓库和git init的概念。
2. 核心概念
在动手之前,需要先理解几个关键区域,它们贯穿整个 Git 工作流。
2.1 仓库 (Repository)
也叫版本库,是 Git 进行版本控制的目录。一个仓库就是一个被 Git 管理的项目,里面包含了所有的文件、修改历史、分支等信息。在你的电脑上,仓库本质上就是一个普通的文件夹,只是多了个隐藏的.git子目录。
2.2 工作区 (Working Directory)
你直接在项目目录里看到的、正在进行编辑的文件所在区域。就是你能随意修改、新增、删除文件的那个地方。
2.3 暂存区 (Stage / Index)
它是一个临时存放区域,可以理解成“购物车”。当你完成了一部分修改,决定要把这些修改记录成一个版本时,需要先把它们“添加”到暂存区。没有放进暂存区的修改,Git 不会主动记录。
2.4 版本库 (Repository)
.git目录就是版本库本体。它是 Git 真正存放所有历史版本、分支、配置信息的地方。当你执行提交操作时,暂存区里的内容会被永久保存到版本库里,成为一个历史快照。
可以用下面这张图直观理解三者的关系:
工作区 (编辑文件) ── git add ──> 暂存区 (挑选改动) ── git commit ──> 版本库 (永久记录)理解了这几个概念,后续的所有操作就有了清晰的框架。
3. 实战演示
3.1 初始化仓库:git init
首先,在你的电脑上找一个合适的位置,创建一个空目录,比如叫myproject,然后进入它:
$mkdirmyproject $cdmyproject接着执行初始化命令:
$gitinit Initialized empty Git repositoryin/Users/yourname/myproject/.git/这条命令会在myproject目录下创建一个隐藏的.git文件夹,里面包含了 Git 所需的全部骨架文件。此时这个目录就已经是一个 Git 仓库了。
查看一下隐藏文件:
$ls-a....git⚠️注意:.git目录是整个仓库的核心,千万不要手动修改或删除里面的任何内容。如果不小心破坏了这个目录,仓库就可能损坏,丢失所有历史记录。所有操作都应该通过 Git 命令来完成。
3.2 配置用户信息
在正式开始提交之前,你必须告诉 Git 你是谁。因为每一次提交都会记录提交者的姓名和邮箱,这是版本追溯的基本要素。
如果现在就直接提交,Git 会提示你设置用户信息。所以最好先一次性配好。
全局配置(推荐)
全局配置意味着这台电脑上所有的 Git 仓库都默认使用这个身份:
gitconfig--globaluser.name"Your Name"gitconfig--globaluser.email"your_email@example.com"把Your Name和your_email@example.com替换成你自己的名字和邮箱即可。
查看配置
想确认配置是否生效,可以用:
$gitconfig-luser.name=Your Nameuser.email=your_email@example.com这个命令会列出所有配置项,包括全局的和当前仓库的。--global选项的配置保存在用户主目录下的.gitconfig文件里,也可以直接去查看那个文件。
为特定仓库设置不同身份
如果你想在某个特定的仓库里使用不同的用户名和邮箱(比如区分个人项目和工作项目),可以进入那个仓库目录,然后执行不带--global的命令:
gitconfig user.name"Work Name"gitconfig user.email"work@company.com"这样设置的身份只对当前仓库生效,不会影响其他仓库,优先级也高于全局配置。
撤销配置
如果不小心设错了,可以这样删除:
gitconfig--global--unsetuser.name同样地,去掉--global就是撤销当前仓库的配置。
4. 注意事项
- 初始化仓库的时机:一般应该在一个项目的根目录下执行
git init,而不是在你的家目录或桌面随意初始化,否则整个目录都会被纳入版本控制,容易造成混乱。 .git目录务必保护好,不要用系统文件管理器随意浏览或修改它。- 用户名和邮箱只是标识,不会做真实性验证,但建议使用和远程仓库(如 GitHub、Gitee)一致的邮箱,这样提交记录才能正确关联到你的账号。
5. 要点总结
git init将一个普通目录变成 Git 仓库,核心就是生成了.git文件夹。- 工作区、暂存区、版本库是理解 Git 工作流的三个关键区域。
- 提交前必须配置
user.name和user.email,--global是全局设置,可按需覆盖。 - 养成在项目根目录下初始化的习惯,不要到处乱建仓库。
6. 练习题
- 在自己的电脑上新建一个名为
learning-git的文件夹,使用git init把它初始化为一个 Git 仓库。 - 配置全局的用户名和邮箱,然后用
git config -l确认生效。 - 在
learning-git仓库中,单独设置一个不同的用户名,然后用git config -l查看效果(注意观察哪些是全局的,哪些是局部的)。 - (思考题)如果执行了
git init之后又反悔了,想把仓库变回普通目录,应该怎么做?(提示:和.git目录有关)