首页 存档 资讯 查看内容

用JGit初始化Git库

2018-3-30 13:00 |来自: 互联网 563 0

摘要: 最近,我被问及如何用 JGit 来初始化一个新的 Git 库,比如实现初始化一个库 /path/to/repodoes。 当我用 JGit 来创建库时其实并不难,这里有些细节值得提一提。因为在网上几乎少有关于这个主题的资料,而且有些还是 ...

最近,我被问及如何用 JGit 来初始化一个新的 Git 库,比如实现初始化一个库 /path/to/repodoes。

当我用 JGit 来创建库时其实并不难,这里有些细节值得提一提。因为在网上几乎少有关于这个主题的资料,而且有些还是错误的,因此本文就总结了如何使用 JGit API 来初始化一个 Git 库的方法。

本地库

为了用 JGit 来初始化一个库,那就要使用初始化命令。factoryGit 命令拥有一个静态方法 init() 来创建初始化命令。

Git git = Git.init().setDirectory( directory ).call();

在上述代码执行后,一个新的Git库就已经创建完成了。这个库的存储位置是通过setDirectory()来给定的,这个库构成了工作目录,它包含了已签出的文件及文件夹。若这个目录并不存在,那么通过上述方法会一直创建这个工作目录。

一个名为 .git 的子目录在整个工作目录中处于最顶层。这里面包含了本地库的历史日志,配置参数,分支指针,索引(又名中转区)等等。

上面的截图中展示了.git 目录的内部结构。refs 目录维护了分支和标签信息。其实际内容将会存储在对象目录中。在 logs 目录中,有关对分区的修改都会被记录。举个例子,一个提交和签出操作都将创建一个日志记录,这个记录可以用 gitreflog 命令来查看。多年前我写的这个帖子 Explore Git Internals with the JGit API 里面详细的写明了如何使用 Git 来管理这个库里内容。

为了确保命令事实上成功执行,状态命令常用于查询库的状态,很像git status做的一样。但不幸的是JGit的status实现不同于原生Git,因为如果没有库,它不会报错。这使得检查一个已存在HEAD ref变得更为必要,它表示事实上有一个库。


路过

雷人

握手

鲜花

鸡蛋
返回顶部