猿问

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

使用 go-git,有什么方法可以检查我是否已提交,但尚未将其推送到远程?


例如:


$ 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(),但这似乎并没有给我我想要的东西,除非我错过了一些东西。


慕虎7371278
浏览 118回答 2
2回答

慕娘9325324

这是在go-git问题 1161中提出的请求,并在go-gitv4.12.0中通过PR 1096和PR 1097交付。您可以使用该命令检查和 的merge-base共同祖先是否相同(您已经推送了所有内容)或不同(您有尚未推送的本地提交,或者相反,您落后了)masterorigin/masterorigin/master

长风秋雁

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)}
随时随地看视频慕课网APP

相关分类

Go
我要回答