我非常非常简单的测试代码总是失败,我不能访问我自己的仓库(私人)(它是完全新的和空的).用户名和密码是完美的工作我测试了登录和退出几次.我经历了几个StackOverflow帖子,但仍然没有线索什么可以导致问题.我已经厌倦了两种不同的方式首先克隆repo(此时给予凭据),然后推送。我的第二次尝试是创建一个repo提交一些东西而不是推送(此时提供凭据)。这些都不起作用。
JGit错误消息:
Exception in thread "main" org.eclipse.jgit.api.errors.TransportException: https://github.com/USERNAME/testing.git: not authorized
at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:249)
at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:325)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:191)
Java代码(第一种方式):
public static void main(String[] args) throws GitAPIException, IOException {
CredentialsProvider credentialsProvider
= new UsernamePasswordCredentialsProvider( "XXXXXXXXXX", "XXXXXXXXXX" );
Git git = Git.cloneRepository()
.setURI( "XXXXXXXXXX" )
.setDirectory(new File(System.getProperty("user.home") + File.separator + "git_test"))
.setCredentialsProvider( credentialsProvider )
.call();
File file = new File( git.getRepository().getWorkTree(), "file" + new Object().hashCode() );
file.createNewFile();
git.add().addFilepattern( file.getName() ).call();
git.commit().setMessage( "Add file " + file.getName() ).call();
git.push()
.setCredentialsProvider( credentialsProvider )
.call();
}
}
Java代码(第二种方式):
this.git = Git.init().setDirectory(new File(folderPath)).call();
this.git.add().addFilepattern("temp.txt").call();
this.git.commit().setMessage("Modified temp.txt").call();
this.git.push().setRemote(textfield.getText())
.setCredentialsProvider(new UsernamePasswordCredentialsProvider("XXXXXXX", "XXXXXX"))
.call();
你知道这是怎么回事吗?
1条答案
按热度按时间ccrfmcuu1#
根据Github:“* 对于开发人员,如果您今天使用密码在www.example.com上验证Git操作GitHub.com,则必须在2021年8月13日之前开始使用HTTPS(推荐)或SSH密钥上的个人访问令牌,以避免中断。如果您收到警告称您正在使用过时的第三方集成,则应将客户端更新到最新版本。*”此处说明
因此,我不得不生成一个令牌,我是这样做的:A personal access token (classic) generation...
之后,在setCredentialsProvider()方法中,我给出了以下内容:
密码必须为空,只需给予令牌即可。