Tag: jgit

如何在JGit中从一个git分支硬重置到另一个?

我有两个分支,一个是主,另一个是1。 现在level1是我需要通常在git bash中将master重置为level1的最新版本我可以通过以下命令来实现。 $ git checkout master $ git tag old-master-branch $ git reset –hard level1 $ git merge -s ours origin/master $ git push origin master 这个对我来说很好。 我的问题是如何使用JGit实现它。 我试过了。 但我无法弄清楚如何设置源和目标分支。 考虑我克隆了一个主分支的场景 Git git = Git.cloneRepository().setURI(remote).setCredentialsProvider(new UsernamePasswordCredentialsProvider(“obuli”, “xxxxxx”)).setDirectory(gitPath) .setNoCheckout(true).call(); 现在我需要将其重置为level1。 git.reset().setMode(ResetType.HARD).call(); 但在这里我没有指定level1。 我不知道如何指定它。 还请说明如何在JGit中提供git merge -s ours origin/master

使用JGit获取存储库中的最新提交

我想使用JGit在存储库中获取最后的提交元数据(按日​​期最小的一个)。 我知道我可以使用提交元数据 try (RevWalk walk = new RevWalk(repository)) { RevCommit commit = walk.parseCommit(repository.resolve(commitHash)); } 但是如何获得最新的提交哈希? 有没有其他方法可以直接在存储库中获取最年轻的RevCommit日期?

如何在JGit中编写git log –stat命令

我有以下git命令: git log –stat=1000 –all > gitstat.log 是否有可能在JGit中实现这一目标? 如果是,在JGit中写这个的等价方法是什么?

从远程git存储库获取单个文件

有没有办法以编程方式从Java中的远程git存储库下载单个文件? 我更喜欢使用尽可能少带宽的解决方案,最好只下载该单个文件。 我不需要浏览存储库,我已经有了文件的路径。 我更喜欢不依赖于其他应用程序的解决方案(例如,在机器上安装另一个git客户端)。 包含git客户端实现本身的Java库将是最佳的。 我能够使用SVNKit做一些与Subversion类似的东西,我已经看到有一个纯粹的java实现的git( eclipse的JGit )可能能够做类似的事情,所以我希望有一个肯定的答案; 虽然从我对git如何工作的理解 – 只允许来自本地存储库的更新 – 这可能certificate是有问题的。

使用JGit列出与给定标记关联的提交

我需要创建一个历史文件,详细说明所有标签和每个标签的所有提交。 我试图在存储库对象上调用getTags()并使用那些对象id,但它们不是提交id。 我还尝试在存储库上使用getAllRefsByPeeledObjectId() ,这确实带回了提交但我无法将它们与标记相关联。 有任何想法吗?

JGit:如何获得分支的所有提交? (无需更改工作目录……)

如何在不更改工作目录的情况下获取JGit分支的所有提交? 不幸的是,JGit文档不是很好…… 在带有砂砾的ruby中,它非常容易: repo = Grit::Repo.new(pathToRepo) repo.commits(branchName, false).each do |commit| doSomethingWithTheCommit end 再见,hurik

使用JGit从Git存储库中查看特定的修订版本

我试图使用jGit克隆存储库并签出特定的提交。 假设提交哈希是:1e9ae842ca94f326215358917c620ac407323c81。 我的第一步是: // Cloning the repository Git.cloneRepository() .setURI(remotePath) .setDirectory(localPath) .call(); 然后我发现了另一个提出这种方法的问题: git.checkout(). setCreateBranch(true). setName(“branchName”). setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK). setStartPoint(“origin/” + branchName). call(); 但我不确定如何将两者联系在一起? 有什么想法吗?

JGit并找到了头

我正试图通过JGit获取HEAD提交: val builder = new FileRepositoryBuilder() val repo = builder.setGitDir(new File(“/www/test-repo”)) .readEnvironment() .findGitDir() .build() val walk: RevWalk = new RevWalk(repo, 100) val head: ObjectId = repo.resolve(Constants.HEAD) val headCommit: RevCommit = walk.parseCommit(head) 我发现它打开了repo罚款,但是head值设置为null 。 我想知道为什么它找不到HEAD? 我正在阅读此文档: http : //wiki.eclipse.org/JGit/User_Guide 存储库的构造与doc所说的一样,以及RevWalk 。 我正在使用最新版本的JGit,它是来自http://download.eclipse.org/jgit/maven的 2.0.0.201206130900-r 。 我的问题:我需要在代码中进行哪些更改才能让JGit返回RevCommit实际实例,而不是像现在这样返回null ? 更新:此代码: val git = new Git(repo) val logs: Iterable[RevCommit] = […]

如何用jgit做相当于“git diff –name-status”的操作?

我想获取修订版XXXXXX和HEAD之间已更改/添加/删除的文件列表。 这是我到目前为止: String oldHash = “a97e5553e37a25bd1a3c99eab303145baed08dbd”; Git git = Git.open(new File(“/tmp/jgit”)); Repository repository = git.getRepository(); ObjectId old = repository.resolve(oldHash); ObjectId head = repository.resolve(“HEAD”); // how do i get the trees from the obj. id? List< diffs = git.diff().setNewTree(null).setOldTree(null).call(); for(DiffEntry diff : diffs) { // do stuff } 这是正确的方法,如果是这样,我如何获得git.diff()所需的树?

jGit – 如何将所有文件添加到临时区域

我尝试了很多方法用jGit克隆一个repo(它有效)。 然后,我在存储库中写了一些存档,并尝试添加所有( git add * , git add -A或类似的东西)..但它不起作用。 文件简单不会添加到临时区域。 我的代码是这样的: FileRepositoryBuilder builder = new FileRepositoryBuilder(); Repository repository = builder.setGitDir(new File(folder)) .readEnvironment().findGitDir().setup().build(); CloneCommand clone = Git.cloneRepository(); clone.setBare(false).setCloneAllBranches(true); clone.setDirectory(f).setURI(“git@192.168.2.43:test.git”); try { clone.call(); } catch (GitAPIException e) { e.printStackTrace(); } Files.write(“testing it…”, new File(folder + “/test2.txt”), Charsets.UTF_8); Git g = new Git(repository); g.add().addFilepattern(“*”).call(); 我究竟做错了什么? 谢谢。 使用addFilePattern(“。”)尝试时遇到exception: Exception […]