jgit新手指南-编程开发技术

jgit新手指南-编程开发技术

ID:30778336

大小:68.50 KB

页数:7页

时间:2019-01-03

jgit新手指南-编程开发技术_第1页
jgit新手指南-编程开发技术_第2页
jgit新手指南-编程开发技术_第3页
jgit新手指南-编程开发技术_第4页
jgit新手指南-编程开发技术_第5页
资源描述:

《jgit新手指南-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、JGit新手指南-编程开发技术JGit新手指南木文由ImportNew・hunter翻译自javacodegeeks0欢迎加入翻译小组。转载请见文末要求。如果你想知道像?gitinit,?gitcheckout?等等的基本Git命令是如何在JGit上运行的话,请往卜•看。本教程提供了最常用的git命令以及它们在JGit上对应部分的概述。本教程将依次介绍:创建一个存储库,从远程获取内容,向丿力史版木中添加和删除文件,检查历史操作,并最终将更改的文件推回到原始存储库。JGit提供了一个类似于Git高级命令的APT,

2、你会在JGit里面的命令行用这个代码git.commit().setMessage(〃Myfirstcommit〃)・call();代替gitcommit-m〃Myfirstcommit〃所有的?JGit命令?有一个cal1()方法,在命令被建立之后用來实际执行它。这些类的命名是在各口的Git命令后加上后缀命令。虽然有些命令提供一个公共构造函数,述是建议使用Git的工厂类来创建命令,如在上而的示例屮所示。获取库但是在更深入到JGitAPT之前,让我们先得到库。最常见的取得JGit的方法可能就是从Maven仓库中

3、取。但是如杲你更喜欢OSGi捆绑,也有P2仓库供你使用。下载页而?上列出了整合该库的必要信息。对于本文所涉及的范围来说,整合在?project/bundle下的?org.Eclipse,jgit核心库已经足够了。如果你对其他JGit的源代码库感兴趣,我推荐阅读JGit资源介绍创建一个仓库首先,我们需要一个仓库。为了得到一个仓库,我们可以初始化一个新的存储库或克隆-个现有的。我们可以用Tnit命令创建一个新的仓库。下面的语句Gitgit=Git.init().sctDirectory("/path/to/repo

4、”).call();将在setDirectory()下设置的路径屮创建一个带工作目录的仓库。.git目录将会直接在?/path/to/repo/.git路径下而。对Init命令的详细解释请参阅文章在JGit中初始化git仓库。Gitgit=Gil.cioneReposilory().setURI(〃https://github・com/eclipse/jgit・git")・setDirectory(,z/path/to/rcpo〃)・call();现有的仓库可以用Clone命令克隆Gitgit二Git.clon

5、eRepository().setURT(“https://github.com/eclipse/jgit.git")・sctDircctory(/,/path/to/rcpo,z).call();上面的代码将克隆远程JGit仓库到木地目录的路径lepath/to/po,下。所有Clone命令的选项在?如何在JGil中克隆Git仓库中进行了更加详细的解释。结束时关闭Git注意那些会返回实例的命令例如Init命令或者Clone命令当不再需要时如果没有明确地关闭(git.closeO)的话,可能会造成文件句柄泄露。

6、幸运的是,Git实现了Autocloseable以便你口J以使用try-with-rcsourccs声明。填充仓库现在我们有仓库了,我们可以填充它的力史了。但为了提交文件首先需要将它添加到所谓的索引(又名临时区)。只有在索引中增加或者删除的文件才会被commit命令考虑。因此JGit命令就是(你猜一下)Add命令。DirCacheindex=git.add()・addFilePattern("readme・txt")・call();因此上述代码把readme,txt这个文件加入到了索引中。值得注意的是文件的实际

7、内容是被复制到了索引。这意味着后来的对这个文件的修改不会被包含在索引中,除非你再次添加。给addfilcpattcrnO的路径必须相对于工作目录的根。如杲一个路径没有指向一个现冇的文件,它就被忽略了。虽然方法名称表明模式是可以接受的,但是在这里JGit的支持是冇限的。传一个将在工作目录中添加所有文件。但是java之类的用法是不支持的,尽管在原生Git命令屮可以这么用。通过callO返冋的索引,在?JGit命名为?DirCache,通过检查验证了它实际上包含了我们所期望的东西。它的?getEntryCount0方

8、法返回了文件总数,而且?getEntry()方法反回了指定位置的入口。现在用Commit命令把变化存入仓库的准备工作已经一切就绪。RevCommitcommit二git.commit().setMessage("Createreadmefile").cal1();至少提交消息必须被指定,否则?call()将会抛出一个?NoMcssagcExccption异常。但是一个空的消息是被允许的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。