You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JGit向GitHub仓库提交文件失败:提交创建但文件未添加

问题分析与修复方案

核心问题1:重复初始化仓库

你先执行Git.cloneRepository()克隆仓库,紧接着又调用Git.init()重新初始化,这会覆盖克隆得到的仓库配置(包括远程仓库地址、分支关联等),导致后续提交无法推送到正确的远程仓库。

直接删除Git.init()这一行即可,克隆操作已经完成了仓库的初始化工作。

核心问题2:Add操作参数错误

git.add().setUpdate(true)的作用是只更新已被Git追踪的文件,对于新创建的文件会完全忽略。如果要添加新文件,必须去掉setUpdate(true)。

其他需要注意的点

  • 克隆后确保本地分支是main:克隆默认会检出远程默认分支(GitHub当前默认是main),若分支不匹配可显式切换。
  • 确认文件路径正确:directoryName+fileName需是相对于仓库根目录的路径,比如文件在docs/note.txt就写docs/note.txt,根目录下的文件直接写fileName。

修复后的代码片段

// 克隆仓库,无需再执行init
Git.cloneRepository()
    .setURI("https://github.com/"+org+"/"+repo+".git")
    .setCredentialsProvider(credentialsProvider)
    .setDirectory(new File(Gitpath))
    .setCloneAllBranches(true)
    .call();

var git = Git.open(new File(Gitpath));

// 可选:若克隆后分支不是main,显式切换
git.checkout().setName("main").call();

// 添加文件:去掉setUpdate(true),确保新文件被追踪
git.add().addFilepattern(directoryName+fileName).call();

// 提交
git.commit().setMessage("Adding files.").call();

// 推送时显式指定远程分支,避免匹配错误
git.push()
    .setCredentialsProvider(credentialsProvider)
    .setRemoteBranchName("main")
    .call();

额外验证步骤

  1. 查看本地仓库目录下的.git/config文件,确认[remote "origin"]的url正确指向你的GitHub仓库。
  2. 提交后用git log查看本地提交是否存在,再手动执行git push origin main测试推送是否成功。

内容的提问来源于stack exchange,提问作者vk l

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:20:36