gpt4 book ai didi

git - JGit:推送到特定分支

转载 作者:太空狗 更新时间:2023-10-29 13:53:37 26 4
gpt4 key购买 nike

我在 github 上有两个分支:master 和 development。我想将一个新创建的文件推送到开发分支。

    String user = "user";
String password = "password";
String localPath = "local";
String remotePath = "https://github.com/some/git.git";
Git.cloneRepository().setBranch("refs/heads/development").setURI(remotePath).setDirectory(new File(localPath)).call();
Git localGit = Git.open(new File(localPath));
localGit.checkout().setName("origin/development").setUpstreamMode(SetupUpstreamMode.TRACK).call();

new File("local/test").createNewFile();

localGit.add().addFilepattern(".").call();
localGit.commit().setMessage("message").call();
localGit.push().setCredentialsProvider(new UsernamePasswordCredentialsProvider(user, password)).call();

我得到的是一个

  TransportException: Nothing to push.

那里有什么问题?

更新:我可以通过删除 checkout 命令使其工作。由于克隆已经 checkout 指定的分支,我之前并不清楚。

最佳答案

通过检查 origin/development(即 remote tracking branch 'origin' 的 upstream repo),您创建了一个 detached head ,这是一个与 0 local 分支相关联的头(即,不与 refs/head/development 相关联,但此处与 refs/remotes/origin/development)

这就是 git push 返回“nothing to push”的原因,因为没有本地分支收到任何新的推送提交。

您需要确定:

  • checkout 本地“development”分支(这是您使用 .setBranch("development") 完成的,尽管我更喜欢,如 jgit clone test 中那样,使用 .setBranch("refs/head/development") 以确保引用本地分支)
  • 使“origin/development”成为“development”的上游分支。
    或者至少,就像这个 jgit push test , 使用正确的 refspec development:development

关于git - JGit:推送到特定分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17458641/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com