1. 仓库结构
创建一个本地git仓库,仓库目录结构如下:
$ git init
$ tree .git
├── config #配置信息,如账号、远程仓库地址等信息。
├── description #该git库的描述信息,如果使用了GitWeb的话,该描述信息将会被显示在该repo的页面上
├── HEAD #当前Branch路径引用,如refs/heads/release
├── hooks #钩子程序,可以被用于在执行git命令时自动执行一些特定操作,例如加入changeid
│ ├── applypatch-msg.sample
│ ├── commit-msg.sample
│ ├── post-update.sample
│ ├── pre-applypatch.sample
│ ├── pre-commit.sample
│ ├── prepare-commit-msg.sample
│ ├── pre-push.sample
│ ├── pre-rebase.sample
│ └── update.sample
├── info #不这么重要,暂不用管
│ └── exclude
├── objects #保存git对象的目录,包括三类对象commit,tag, tree和blob
│ ├── info
│ └── pack
└── refs #保存branch和tag对应的commit
├── heads #所有branch的commit,如cat .git/refs/heads/master => f7ed7...d193
└── tags #tag对应的commit
2. 克隆仓库
# 例:git clone git@github.com:hollson/gdk.git
git clone <git_url> -b develop # 从某分支克隆
git clone --branch v1.0.0 <git_url> # 从标签克隆
3. 关联仓库
# 将本地(空)仓库关联到远程仓库
git remote add origin <git_url> # 添加远程仓库
git remote set-url origin <git_url> # 修改远程仓库
git remote -v # 显示所有远程仓库
git remote show origin # 显示远程仓库信息
git remote prune origin # 清理失效本地引用
4. 子模块
4.1 添加子仓库
# 在主仓库下添加子仓库
git submodule add git@github.com:hollson/gdk.git gdk
查看子仓库(模块)信息:
$ tail -3 .git/config
[submodule "gdk"]
url = git@github.com:hollson/gdk.git
active = true
$ cat .gitmodules
[submodule "gdk"]
path = gdk
url = git@github.com:hollson/gdk.git
$ catit/modules/gdk/HEAD
ref: refs/heads/master
$ cat .git/modules/gdk/refs/heads/master
c311313d2287f95e04a558166005af181e42eb96
4.2 检出子仓库
git submodule add <仓库地址> <本地路径>
git submodule update --init --recursive
git clone --recursive <repo>
git submodule update --init --recursive
recursive:递归
4.3 删除子仓库
git rm --cached ./gdk
# 然后:
# 删除 .gitsubmodule中相关配置
# 删除 .git/config 中相关配置
# 删除 ./gdk 子仓库目录
本文详细介绍了一个本地Git仓库的结构,并提供了如何创建、克隆及关联仓库的方法。此外,还介绍了子模块的添加、检出与删除流程。
389

被折叠的 条评论
为什么被折叠?



