我有兴趣从go运行git log命令。我看到C#版本支持这个(https://github.com/libgit2/libgit2sharp/wiki/git-log)。 GO version是否也支持类似的git log命令?我做了一些快速搜索“查询”和“过滤”关键字,我没有找到任何东西。如何在GO中使用libgit2运行git log命令?
3
A
回答
2
RevWalk是你在找什么。
repo, err := git.OpenRepository("path/to/repository")
log.Println(err)
w, err := repo.Walk() // returns a RevWalk instance for this repo
log.Println(err)
您可以配置返回的RewWalk
实例。
err = w.PushHead() // instruct to start from the head commit
log.Println(err)
如果你想登录不同的分支,你可以使用PushRef来代替。还有其他配置选项可以配置日志的起点和终点。查看这些文档。
使用Iterate方法来检查提交列表。您需要传递一个函数,该函数将在列表中的每个提交中调用。
w.Iterate(func(c *git.Commit) bool {
fmt.Println(c.Message())
return true // return false when you want to stop iterating
})
1
您至少可以使用Commit.Parent
method来模拟git日志,该日志允许访问提交的父级(从commit.go
)。
除此之外,我没有看到直接调用git log。
相关问题
- 1. “git log -1 fullpath/myfile”with libgit2
- 2. 如何运行GIT命令
- 3. Git扩展脚本 - 如何使用git log命令
- 4. 使用Git Log命令的grep功能
- 5. 如何在libgit2中实现git log <branch> ..FETCH_HEAD?
- 6. 运行git命令
- 7. 如何在终端中停止/取消'git log'命令?
- 8. 如何在git log命令中排除已删除的文件?
- 9. 如何从java运行git命令?
- 10. 如何从命令行从git启动和运行命令
- 11. 如何在Groovy脚本(窗口)中使用GIT命令(diff,log等)
- 12. 如何从命令行使用GIT PULL?
- 13. 格式化的git log命令
- 14. 无法在$ GERRIT_SITE/git文件夹中运行任何git命令
- 15. 使用libgit2做Git Pull
- 16. 如何在PowerShell中为每个git子模块运行命令?
- 17. 在libgit2中执行git描述
- 18. 用libgit2实现'git pull'?
- 19. 如何在Windows Git Gui中做'git log'?
- 20. 如何在Git中混淆git命令?
- 21. 在命令行中运行命令时的CPU使用情况
- 22. 在命令行中使用Go,如何隐藏用户终端的命令行输入?
- 23. ZSH:如何在命令行中运行Vim-style替换命令?
- 24. 如何运行Docker使用Go Sdk运行Docker?
- 25. 如何将git log命令与文件名和选项一起使用?
- 26. 无法从命令行运行git
- 27. 如何在java中使用线程异步运行命令行
- 28. 在命令行中运行程序时如何使用冒号?
- 29. Notepad ++在宏中使用“运行”命令
- 30. 如何运行命令行