本节主要命令:
git init
ls 不能列出 .git
ls -a 列出 .git
创建本地仓库
1. 初始化 Git 仓库
git init
• 初始化一个新的 Git 仓库,在当前目录下生成一个 .git 隐藏文件夹,用于存储版本控制信息。
2. 查看隐藏文件
ls -a
• 使用 ls -a 显示隐藏文件,验证 .git 文件夹是否存在。
配置本地仓库
3. 配置用户信息
设置用户名和邮箱
git config user.name "liutao"git config user.email "123123@qq.com"
• 配置当前仓库的用户名和邮箱,用于标识提交记录的作者。
全局设置用户名和邮箱
git config --global user.name "liutao"git config --global user.email "123123@qq.com"
• 设置全局用户名和邮箱,适用于所有仓库。
• 全局配置会存储在 ~/.gitconfig 文件中。
4. 查看配置信息
git config -l
• 列出当前 Git 仓库的配置信息,包括用户名、邮箱以及仓库的核心配置。
5. 修改或删除配置
删除配置信息
git config --unset user.namegit config --unset user.email
• 删除当前仓库的用户名和邮箱配置。
(对应 没有加 global 的配置命令,加了 global 的配置会无法删除)
删除全局配置信息
git config --global --unset user.namegit config --global --unset user.email
• 删除全局的用户名和邮箱配置。
(对应加了 global 的配置命令)
6. 配置中容易出错的地方
• 引号错误:
• 注意双引号或单引号要成对出现,例如:
git config user.name "liutao "
而不是:
git config user.name "liutao'
• 命令拼写错误:
• 如 gt 应为 git,--emait 应为 --email,需注意拼写。
• 多余字符或未完成命令:
• 遇到 ^C 或 1 时,表示命令中途中断或未正确执行。
7. 配置验证
通过以下命令验证配置是否正确:
git config -l
确保输出的用户名和邮箱信息是你期望的内容。
8. 总结要点
• Git 的初始配置是进行版本控制的第一步,设置用户名和邮箱是必要的。
• 区分全局配置和当前仓库的配置,必要时使用 --global 或 --unset 修正。
• 运行 git config -l 验证设置,确保没有拼写错误或引号错误。
这些操作是 Git 基础,掌握后可以继续学习文件的添加、提交以及远程仓库的使用。
认识工作区
问:可以在.git 文件夹下创建ReadMe文件,使用版本库管理ReadMe
答:.git 文件夹是 Git 版本库的内部目录,主要用于存储 Git 的对象、配置、索引等信息。一般来说,不建议在 .git 文件夹内部创建和管理文件,比如 ReadMe,因为 .git 目录的内容是由 Git 自己维护的,手动修改可能会导致问题。
目前情况下,Git能否管理ReadMe文件??
添加文件
编辑一下README.md
index 存储 add 的暂存区文件;
HEAD 是 git 的指针,指向当前分支,分支 master 存储最新一次提交;
objects目录下的内容是 Git 存储的各种对象,主要包括 提交对象(commit,代表一次提交,记录 tree,作者,提交日期等信息)、树对象(tree,就是存储 目录结构) 和 blob(文件内容,不存储文件名和目录结构)。
commit操作
git log
命令分析与解释
1. cat .git/HEAD
ref: refs/heads/main
• HEAD 指向 refs/heads/main,这意味着 HEAD 指向 main 分支。也就是说,当前操作的分支是 main。
2. cat .git/refs/heads/main
db4c5b23bab5b4df3cd68c821c0df30ff00dd177
• 这表示 main 分支 的最新提交(即提交哈希值为 db4c5b23bab5b4df3cd68c821c0df30ff00dd177)是当前分支的指向。
3. git log --pretty=oneline
db4c5b23bab5b4df3cd68c821c0df30ff00dd177 (HEAD -> main) commit 3 files
9080dfc599200764b50b382576f5c29d7e9ea8cc add first file
• main 分支存放的是当前分支的最新提交记录。
• HEAD 是指向当前分支的指针,在我的情况下,HEAD 指向 main 分支。
• git log 命令显示了提交的历史,其中最新的提交(哈希值 db4c5b23bab5b4df3cd68c821c0df30ff00dd177)是当前的提交。
所有操作都是基于当前分支 main 和它的最新提交进行的。
注意 blob 哈希值前两位是文件夹的名称,比如:
100644 blob 8d0e41234f24b6da002d962a26c2495ea16a425f README.md
使用 tree .git/ 命令发现:
objects
│ ├── 2d
│ │ └── f6e46812c6a5b2505368eb0e30342427ee7568
│ ├── 5e
│ │ └── b35199f283a64da21d7735ba0f5fb61d3e754e
│ ├── 6f
│ │ └── 750423942c286d0b7817c104dfaa46ced1ee33
│ ├── 8d
│ │ └── 0e41234f24b6da002d962a26c2495ea16a425f