谈谈JGIT的使用经验

9 阅读1分钟

在工作使用过程中,遇到了一些坑。

场景一:通过JGIT拉分支然后跟master比对,分析出版本差异清单

遇到的坑

  • 代码拆版后重新创建分支,JGit Pull 未生效。如果本地从远程拉了feature_branch,但过一段时间后因为代码拆版的原因重新做分支,这时候通过JGIT来pull代码并未生效。
  • 如果本地从远程拉了feature_branch,但过一段时间后因为代码通过reset强行回退,这时候通过JGIT来pull代码并未生效。

解决方案:通过fetch来同步远程代码,来解决JGit实现git fetch及分支一致性处理

关于fetch与pull的差异

  • git fetch --prune(JGit 中 setRemoveDeletedRefs(true))  是解决远程分支删除后重新创建导致分支不一致的核心操作。
  • git pull 仅在需要合并远程代码时使用,不负责清理失效的远程分支引用。
  • 如果远程分支被删除并重新创建,必须先执行 git fetch --prune 清理本地引用,再决定是否执行 git pull。

场景二: