首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用go-git检查是否已将分支推到远程。

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

Stack Overflow用户
提问于 2019-08-20 04:16:46
回答 2查看 1.8K关注 0票数 3

使用go-git,是否有任何方法检查是否已提交,但尚未将其推到远程?

例如:

代码语言:javascript
复制
$ echo "Hello" > hello.txt
$ git add -A
$ git commit -am "Add hello"
$ git status
On branch master
Your 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(),但这似乎并没有给我我想要的东西,除非我遗漏了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-20 19:11:25

我跟着冯克的回答,给出了一个解决方案。

代码语言:javascript
复制
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)
}

要点在这里

票数 1
EN

Stack Overflow用户

发布于 2019-08-20 04:37:54

这是在第1161期中提出的,并在v4.12.0PR 1096PR 1097中发布。

您可以使用命令merge-base来检查masterorigin/master的共同祖先是否是相同的(您已经推动了一切)(您有本地提交,而您没有推动,或者相反,您是在origin/master后面)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57566661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档