是否可以使用JGit

时间:2016-10-18 17:39:19

标签: git jgit

我的要求是我想以编程方式将文件提交到远程基本存储库(位于https//:myproject.git等中心位置)。

我想知道是否可以将文件提交到远程基本存储库(master),而无需将基本repo克隆到本地计算机中。我是JGit的新手。请告诉我。

1 个答案:

答案 0 :(得分:1)

正如@larsks已经指出的那样,您需要首先创建远程基本存储库的本地克隆。更改只能提交到基本存储库的本地副本。最后,通过推送到原始存储库,可以在远程存储库中为其他存储库提供本地更改。

JGit有一个 Command API ,它以Git命令行为模型,可用于克隆,提交和推送。

例如:

// clone base repository into a local directory
Git git Git.cloneRepository().setURI( "https://..." ).setDirectory( new File( "/path/to/local/copy/of/repo" ) ).call();
// create, modify, delete files in the repository's working directory,
// that is located at git.getRepository().getWorkTree()
// add and new and changed files to the staging area
git.add().addFilepattern( "." ).call();
// remove deleted files from the staging area
git.rm().addFilepattern( "" ).call();
// commit changes to the local repository
git.commit().setMessage( "..." ).call();
// push new commits to the base repository
git.push().setRemote( "http://..." ).setRefspec( new Refspec( "refs/heads/*:refs/remotes/origin/*" ) ).call();

上例中的PushCommand明确说明了要推送到哪个远程以及要更新的分支。在许多情况下,省略setter并让命令从git.push().call()的存储库配置读取合适的默认值就足够了。

有关详细信息,您可能需要查看一些详细介绍cloningmaking local changes以及authenticationsetting up the development environment等其他方面的文章。