为了账号安全,请及时绑定邮箱和手机立即绑定

使用go-git检查分支是否已推送到远程

使用go-git检查分支是否已推送到远程

Go
慕虎7371278 2023-07-17 13:49:48
使用 go-git,有什么方法可以检查我是否已提交,但尚未将其推送到远程?例如:$ echo "Hello" > hello.txt$ git add -A$ git commit -am "Add hello"$ git statusOn branch masterYour branch is ahead of 'origin/master' by 2 commits.  (use "git push" to publish your local commits)nothing to commit, working tree clean我知道我可以使用 go-git 来检查w,_ = repo.Worktree()和w.Status(),但这似乎并没有给我我想要的东西,除非我错过了一些东西。
查看完整描述

2 回答

?
慕娘9325324

TA贡献1783条经验 获得超4个赞

这是在go-git问题 1161中提出的请求,并在go-gitv4.12.0中通过PR 1096和PR 1097交付。

您可以使用该命令检查和 的merge-base共同祖先是否相同(您已经推送了所有内容)或不同(您有尚未推送的本地提交,或者相反,您落后了)masterorigin/masterorigin/master


查看完整回答
反对 回复 2023-07-17
?
长风秋雁

TA贡献1757条经验 获得超7个赞

func main() {

  dir, err := os.Getwd()

  CheckIfError(err)


  repo, err := git.PlainOpen(dir)

  CheckIfError(err)


  revision := "origin/master"


  revHash, err := repo.ResolveRevision(plumbing.Revision(revision))

  CheckIfError(err)

  revCommit, err := repo.CommitObject(*revHash)


  CheckIfError(err)


  headRef, err := repo.Head()

  CheckIfError(err)

  // ... retrieving the commit object

  headCommit, err := repo.CommitObject(headRef.Hash())

  CheckIfError(err)


  isAncestor, err := headCommit.IsAncestor(revCommit)


  CheckIfError(err)


  fmt.Printf("Is the HEAD an IsAncestor of origin/master? : %v\n",isAncestor)

}

查看完整回答
反对 回复 2023-07-17
  • 2 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信