gpt4 book ai didi

python - 使用 gitpython 编辑提交

转载 作者:太空狗 更新时间:2023-10-29 21:43:51 30 4
gpt4 key购买 nike

假设您在终端中,当前位于 git 存储库的根目录下。

如果你有GitPython安装后,您可以执行此操作以获取最后提交的提交,或者更确切地说,HEAD 指向的提交:

>>> import git
>>> r = git.Repo('.')
>>> c = r.head.commit
>>> c
<git.Commit "62e71e8210d0d0275b1f5845bf3033a7bfa3ed73">
>>> c.message
u'old message'
>>> c.message = "new message"
>>> c.message
'new message'

但是如果你退出 python 并进入 git log 这里,你会看到提交消息保持不变。如何使用此库编辑提交?

最佳答案

您不能编辑 git 提交。这是 git 契约的一部分。

不过,您可以用新的提交替换 git 提交。这就是 git commit --amend 所做的:它回溯上次提交,将更改与您所做的新更改组合,然后从组合中创建一个全新的提交。 git rebase 和其他任何声称“改变”历史的东西都是一样的。

所以你必须在这里做同样的事情:将分支指针移回一次提交,重复使用相同的树对象,并使用不同的消息提交它。请记住,您会搞砸任何看到该提交的其他人; 永远不要更改已发布的历史记录。

我根本不知道这个库,但是文档中的示例组合可能会做你想做的事:

branch = r.head.reference
commit = r.head.commit
branch.commit = commit.parents[0]
# This works because the index is unchanged by the `branch.commit`
# edit, but it won't work if you're trying to change a commit on
# another branch -- you can't really do that
new_commit = repo.index.commit(u"new message")

新提交将有一个不同的散列,但应该包含相同的更改并具有新消息。 小心做,我大胆的话很重要,改变历史是一个重要的操作,您应该了解自己在做什么。


* 好吧,好吧,有 git “注释”,可以独立于它们所附加的提交进行编辑。但这显然不是你在这里的意思,而且我还没有看到任何人实际使用它们。

关于python - 使用 gitpython 编辑提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14329828/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com