git学习(一):git的版本库在哪儿

时间:2023-03-09 14:42:15
git学习(一):git的版本库在哪儿

查看版本

 git --version # 查看git的版本

设置或者查看用户名和邮箱

 git config --global user.name "tuhooo"            // 如果后面没有用户名就是查看, 有的话就是设置
git config --global user.email tuhooo@.com // 如果后面没有邮箱就是查看, 有的话就是设置

初始化一个项目

 mkdir you_project_dir               // 新建一个目录,然后进去
git init // 初始化
git init you_project_dir // 1.6.5 以后的可以在git后面接目录名,自动完成目录的创建

添加文件并提交

 git add path/to/file                // 将文件交给工作区管理
git commit -m "commit message" // 提交修改

克隆现有的项目进行备份

 git clone demo demo_bkp

工作区根目录为什么有个.git目录

CVS:工作区的根目录以及每个子目录下面都有一个CVS目录,包含了几个配置文件,建立了对版本库的追踪。如CVS目录下的Entries文件记录了从版本库检出到工作区的文件名称、版本和时间戳等,通过时间戳的对比可以快速扫描工作区文件的改动。Git将版本库放在工作区根目录下的设计使所有的版本控制操作都在本地即可完成。

 git grep "工作区文件内容搜索"

git将版本库(.git)放在工作区根目录下,git的相关操作一定要在工作区根目录下执行么?换句话说,在工作区的子目录下执行git命令,是如何定位版本库呢?

实际上,在git工作区的某个子目录下执行操作时,会在工作区目录中依次向上递归查找.git目录,找到的.git目录就是工作区对应的版本库,.git所在目录就是工作区的根目录,文件.git/index记录了工作区文件的状态(实际上是暂存区的状态)。

在非git工作区执行git命令会因为找不到.git目录而报错。

 strace -e 'trace=file' git status   // 追踪git status的磁盘访问
git rev-parse --show-toplevel // 显示工作区根目录
git rev-parse --git-dir // 显示版本库.git目录所在位置
git rev-parse --show-prefix // 相对于工作区根目录的相对目录
git rev-parse --show-cdup // 从当前目录后退到工作区的深度