我有兴趣从 go 运行 git log 命令。我看到 C# 版本对此有支持(https://github.com/libgit2/libgit2sharp/wiki/git-log)。GO 版本是否也支持类似的 git log 命令?我对“查询”和“过滤”关键字进行了一些快速搜索,但没有找到任何东西。
2 回答

慕无忌1623718
TA贡献1744条经验 获得超4个赞
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
})

烙印99
TA贡献1829条经验 获得超13个赞
- 2 回答
- 0 关注
- 261 浏览
添加回答
举报
0/150
提交
取消