这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
虽然经常在github上闲逛、使用git对自己的小项目等等进行版本控制,但是对git的原理仍然不够熟悉。
个人经常遇到的问题包括
- git配了无数遍,但是在下一次配置的时候还是基于搜索引擎的配置。
- 团队合作时,merge和rebase底层怎么绕来绕去的不清楚,莫名其妙成功了,莫名其妙失败了。
- 基于分支的开发,错误操作如何回滚?什么样的操作对于团队主分支是安全的,什么样的操作是有可能对团队其他成员分支造成麻烦的操作?
这次课程学习解决了第一个问题,同时对git的理解也加深了。第2,3个问题通过搜索回顾了一下,在这里不做记录。
1 git目录介绍
每个git仓库下都有.git文件,其中包含的文件如图所示,他们分别有不同的作用。本文中会记录。
1.1 git config
包括三种级别的config
分别是--local(配置在本地仓库的.git/config中)、--global(配置在~/.gitconfig中)、--system(配置在$(prefix)/etc/gitconfig中)
三种config级别依次升高,低级的config会覆盖高级的config
1.2 常见的git 配置
git config --global user.name "myname"
git config --global user.email myemail@xxx.com
2 git remote
表示本地仓库和远端仓库的一些关联信息
git remote -v
查看remote
git remote add origin git@github.com:tianqixin/runoob-git-test.git
添加remote与本地仓库关联。其中可以添加ssh的remote和http的remote
3 常用操作
git init .
初始化当前目录,将会在当前目录下创建.git目录
git add .
将修改加入暂存区
git commit -m "some words"
提交暂存区中的修改到.git目录
4 objects
.git文件下的objects目录中,包括三类objects,分别是blob、tree、commit。他们的含义和关联关系如下
git cat-file -p 239exxxxe832
查看objects的内容
5 refs
.git文件下的refs中,保存了所有的分支信息。
git checkout -b 分支
创建分支