如何使用 gitpython 查询特定 git repo 分支的日志?
How to query the log of a specific git repo branch using gitpython?
目标:使用 gitpython.
在 python 脚本中执行以下 git 命令
cmdLine 版本:
git log -L :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py
脚本版本:
repo.git.log(f'-L :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py')
这会导致以下错误,
git.exc.GitCommandError: Cmd('git') failed due to: exit code(128)
cmdline: git log -L :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py
stderr: 'fatal: -L argument not 'start,end:file' or ':funcname:file': :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py'
当我将错误中的 cmdLine 版本直接复制并粘贴到...命令行时,它按预期工作。
我的假设是 gitpython 正在查看 master 分支,而实际工作分支不是 master。
这个假设的原因:
1) 找了很多帖子讨论命令的使用
repo.git.checkout("<branch>")
这让我知道我的分支是最新的。当我在使用这个命令后从 repo 查询提交时,我仍然从 master 获得提交。
2) 相信这是在 gitpython 中未成功更改分支的问题的另一个原因是以下示例。
commits = list(repo.iter_commits('<branch>'))[:5]
当我更改分支时,我得到了检索与指定关联的提交的预期结果。
我愿意使用其他 python git 库。无论如何都没有绑定到 gitpython。我想另一种选择是放弃 git 库并通过 python 命令行调用与 git 交互。
感谢所有帮助,谢谢!
您需要将命令行参数拆分为 *args
(列表):
来自:
repo.git.log('-L :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py')
至:
repo.git.log('-L', ':dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py')
(逗号)
目标:使用 gitpython.
在 python 脚本中执行以下 git 命令cmdLine 版本:
git log -L :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py
脚本版本:
repo.git.log(f'-L :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py')
这会导致以下错误,
git.exc.GitCommandError: Cmd('git') failed due to: exit code(128)
cmdline: git log -L :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py
stderr: 'fatal: -L argument not 'start,end:file' or ':funcname:file': :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py'
当我将错误中的 cmdLine 版本直接复制并粘贴到...命令行时,它按预期工作。
我的假设是 gitpython 正在查看 master 分支,而实际工作分支不是 master。
这个假设的原因:
1) 找了很多帖子讨论命令的使用
repo.git.checkout("<branch>")
这让我知道我的分支是最新的。当我在使用这个命令后从 repo 查询提交时,我仍然从 master 获得提交。
2) 相信这是在 gitpython 中未成功更改分支的问题的另一个原因是以下示例。
commits = list(repo.iter_commits('<branch>'))[:5]
当我更改分支时,我得到了检索与指定关联的提交的预期结果。
我愿意使用其他 python git 库。无论如何都没有绑定到 gitpython。我想另一种选择是放弃 git 库并通过 python 命令行调用与 git 交互。
感谢所有帮助,谢谢!
您需要将命令行参数拆分为 *args
(列表):
来自:
repo.git.log('-L :dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py')
至:
repo.git.log('-L', ':dataLoad:/home/ubuntu/projects/alpha-draw/py/enigma.py')
(逗号)