当前位置: 首页 > 知识库问答 >
问题:

每个GitHub API每次提交时不可能传递多个文件?

轩辕翰
2023-03-14

我已经使用GitHub API进行了自动提交
为此,我使用了Kohsuke的Java库,它与以下API命令配合使用:

Create a file
This method creates a new file in a repository
PUT /repos/:owner/:repo/contents/:path

但是,是否可以在每个GitHub API的一次提交中包含多个文件?

共有3个答案

章学义
2023-03-14

扩展Dan Dowma的答案,有可能将这些更改推送到现有分支


final String branchName = "main";

// start with a Repository ref
GHRepository repo = ...

// get a sha to represent the root branch to start your commit from.  
// this can come from any number of classes:
//   GHBranch, GHCommit, GHTree, etc...

// for this example, we'll start from the selected branch
GHBranch selectedBranch = repo.getBranch(branchName);

// get a tree builder object to build up into the commit. 
// the base of the tree will be the master branch
GHTreeBuilder treeBuilder = repo.createTree().baseTree(selectedBranch.getSHA1());

// add entries to the tree.
treeBuilder = treeBuilder.add(pathToFile, contentOfFile, executable);

// perform the commit
GHCommit commit = repo.createCommit()
  // base the commit on the tree we built
  .tree(treeBuilder.create().getSha())
  // set the parent of the commit as the master branch
  .parent(selectedBranch.getSHA1()).message("multi-file commit").create();

// Update an existing branch from that commit
GHRef existingBranchRef = repo.getRef("/refs/heads/" + branchName);
existingBranchRef.updateTo(commit.getSHA1());

潘文乐
2023-03-14

不确定这是否是您想要的,也许再多描述一点会有所帮助,但请看以下内容:https://developer.github.com/v3/git/

狄望
2023-03-14

下面的代码snippit将允许您使用Kohsuke的Java库准备一个包含多个文件的提交,然后将一个新的分支与之关联

// start with a Repository ref
GHRepository repo = ...

// get a sha to represent the root branch to start your commit from.  
// this can come from any number of classes:
//   GHBranch, GHCommit, GHTree, etc...

// for this example, we'll start from the master branch
GHBranch masterBranch = repo.getBranch("master");

// get a tree builder object to build up into the commit. 
// the base of the tree will be the master branch
GHTreeBuilder treeBuilder = repo.createTree().baseTree(masterBranch.getSHA1());

// add entries to the tree in various ways.  
// the nice thing about GHTreeBuilder.textEntry() is that it is an "upsert" (create new or update existing)
treeBuilder = treeBuilder.textEntry(pathToFile, contentOfFile, executable);

// repeat calls of treeBuider.textEntry() or .shaEntry() or .entry() ....

// perform the commit
GHCommit commit = repo.createCommit()
  // base the commit on the tree we built
  .tree(treeBuilder.create().getSha())
  // set the parent of the commit as the master branch
  .parent(masterBranch.getSHA1()).message("multi-file commit").create();

// create a new branch from that commit
String newBranchName = "myNewBranchName";
GHRef newRef = repo.createRef("/refs/heads/" + newBranchName, commit.getSHA1();
GHBranch newBranch = repo.getBranch(newBranchName);

 类似资料:
  • 我是java新手,我在VSCODE上编码。我创建2.java文件,如下图所示: 这些是每个文件: Main.java:

  • 问题内容: 我想要一个脚本,每当我单击“提交”按钮时,该脚本就会将表单中的文本回显到div标签。 我能够立即执行此操作,但是我希望即使我提交另一个文本,文本也仍会显示在div中。我希望每个新提交的文本都创建一个列表。将其添加到上一个列表。 可能与数据库有关,但我想知道,每次单击提交时,我只会得到当前提交的文本。 这样的脚本的例子 我只想在每次单击提交时将条目添加到列表中。 问题答案: 我很高兴你玩

  • 我正在尝试构建一个预算计算器来练习python。目前,我正在尝试迭代目录中的文件,然后将每个文件通过一个函数传递,以将我需要的数据提取到DataFrame(准备让它对其执行计算)。 我已经设法创建了清理数据的函数,以及迭代文件的for循环。但是,我不知道如何为每次迭代附加DataFrame。 当我运行此代码时,只有一个文件被添加到DataFrame,而不是所有文件。 提前感谢您的任何帮助

  • 有没有办法播放相同的音频文件(使用 sun.audio),而不必每次都加载文件输入流?这就是我现在尝试的方式: 尽管“nomnom.au”只有几秒钟,但当我重复此方法(播放声音)大约 30 次时,我很快就会出现内存不足错误。我认为这是由于每次需要播放音频文件时我都会加载音频文件这一事实引起的。 我尝试在类的开头声明FileInpuStream和AudioStream,只在main方法的开头加载我的

  • 问题内容: 我在Linux中有一个多线程程序。我想在某些内存区域中查看它们是否已在特定时间段内写入。为此,我仅授予对这些内存页面的读取访问权限,并为SIGSEGV安装信号处理程序。现在我的问题是,每个线程都会自己调用信号处理程序。假设线程1写入某个禁止的内存区域,它是执行信号处理程序的区域吗? 问题答案: 首先 信号处理是全过程的;进程中的所有线程对于每个信号共享相同的配置。如果一个线程使用sig

  • 问题内容: 我必须对一个大型Java项目做一个一般性的说明,但是我对它的了解很少,我想知道是否有确定以下内容的准则: 每个包有多少个类可以被认为是正确的,低或高的(这个项目每个包有3.89个类,对我来说似乎太小了), 每个类有多少种方法?(该项目每个类有6.54个方法… 每个方法的行数?(此项目每种方法大约有7行(对我来说似乎不错,也许有点低)) 我应该指出,这个问题仅涉及体积。我有很多来自质量工