:创建你的第一个“本地仓库”)
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.nameYour Namegitconfig--globaluser.emailyour_emailexample.com把Your Name和your_emailexample.com替换成你自己的名字和邮箱即可。查看配置想确认配置是否生效可以用$gitconfig-luser.nameYour Nameuser.emailyour_emailexample.com这个命令会列出所有配置项包括全局的和当前仓库的。--global选项的配置保存在用户主目录下的.gitconfig文件里也可以直接去查看那个文件。为特定仓库设置不同身份如果你想在某个特定的仓库里使用不同的用户名和邮箱比如区分个人项目和工作项目可以进入那个仓库目录然后执行不带--global的命令gitconfig user.nameWork Namegitconfig user.emailworkcompany.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目录有关