我的要求是我想以编程方式将文件提交到远程基本存储库(位于https//:myproject.git
等中心位置)。
我想知道是否可以将文件提交到远程基本存储库(master),而无需将基本repo克隆到本地计算机中。我是JGit的新手。请告诉我。
答案 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()
的存储库配置读取合适的默认值就足够了。
有关详细信息,您可能需要查看一些详细介绍cloning,making local changes以及authentication和setting up the development environment等其他方面的文章。