JGit不拉远程重置

标签 jgit git-reset

我看到一个奇怪的行为,我不知道这是一个错误还是一个功能。 在 1 号机器上,我执行 git reset --hard someCommit && git push -f 。然后重置会传播到所有计算机(我可以通过从另一台计算机执行 git pullgit log 来查看更改)。

在运行 JGit 的 2 号机器上,我执行:git.pull().call(),但未应用重置,磁盘上的文件也未更改。而且 git.log().call() 并不指向恢复的提交。

我做错了什么?

最佳答案

喜欢Tim据描述,您可能需要强制在其他计算机上获取。

PushCommand::call() 的返回值将告诉您推送是否成功以及为何失败。

要强制拉入 JGit,请按照以下示例操作:

git.fetch()
  .setForce( true )
  .setRefSpec( new RefSpec( "refs/heads/someBranch:refs/remotes/origin/someBranch" ) )
  .call();
git.reset()
  .setMode( ResetType.HARD )
  .setRef( "someBranch" )
  .call();

关于JGit不拉远程重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37956037/

相关文章:

git add + git reset 硬删除工作副本文件 - 撤消?

amazon-s3 - JGit S3 仅支持标准美国存储桶?

java - 如何使用 JGit 检查 Git 克隆是否已经完成

java - 如何在JGit中编写git log --stat命令

git - 为什么 `git reset --hard HEAD~X` 会留下未跟踪的文件?

git - 在不推送本地分支的情况下重置远程分支

java - JGit 中具有更改历史记录的日志

rename - 如何在 JGit 中重命名文件

git - git reset --hard origin/master 是什么意思?

Git 暂存到工作目录?