【问题标题】:Reset to specified commit using JGit使用 JGit 重置为指定的提交
【发布时间】:2016-08-25 13:16:40
【问题描述】:

我正在使用 JGit 以编程方式将远程更改拉取到本地存储库。如果拉取失败并引发异常,我想将本地存储库重置为拉取尝试之前的最新提交。

但是,ResetCommand 不将提交标识符作为参数,即使 Git 重置命令接受“提交”参数。这是ResetCommand 的已知限制,还是我遗漏了什么?

是否有替代的 JGit 命令或命令序列可以用于相同的效果?

【问题讨论】:

  • 目前无法测试,但您是否尝试将setRef() 与commitId 一起使用?

标签: git jgit


【解决方案1】:

ResetCommandsetRef() 方法允许指定提交的 ID。 例如:

resetCommand.setRef("< SHA-1 >");

拉取失败可能有多种原因。我假设“拉失败并引发异常”是指无法与当前本地分支合并的拉。

如果您的目的是防止合并失败影响当前存储库状态,您可能需要先获取上游更改,然后 按照我在这里提出的建议:How to get conflicting lines with JGit

【讨论】:

  • setRef() 方法是我正在寻找的,我只是没有意识到它接受提交 id 作为参数(API 文档没有提到这一点)。我实际上是在拉取之前存储本地更改,所以我永远不会有冲突。但是如果由于其他原因而失败,pull() 方法也会抛出 GitAPIException。如果发生这种情况,我不清楚存储库将处于哪种状态,这就是我执行重置的原因。
猜你喜欢
  • 2018-12-11
  • 2015-01-24
  • 2018-04-15
  • 2014-05-21
  • 1970-01-01
  • 2015-07-27
  • 1970-01-01
  • 2015-02-06
  • 2015-05-01
相关资源
最近更新 更多