gitcommitを編集することはできません。 それはの契約の一部ですgit
。
ただし、gitcommitを新しいものに置き換えることができます。それが何をするかgit commit --amend
です:それは最後のコミットをさかのぼり、あなたが行った新しいものと変更を組み合わせ、そしてその組み合わせから真新しいコミットを作ります。git rebase
歴史を「変える」と主張するものと同じこと。
したがって、ここでも同じことを行う必要があります。ブランチポインタを1つのコミットに戻し、同じツリーオブジェクトを再利用して、別のメッセージでコミットします。そのコミットを見た他の人を台無しにすることを覚えておいてください。公開された履歴を変更しないでください。
私はこのライブラリをまったく知りませんが、ドキュメントからの例のこの組み合わせはあなたが望むことをするかもしれません:
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「メモ」があります。しかし、それは明らかにあなたがここで意味していることではありません、そして私はまだ誰かが実際にそれらを使用しているのを見たことがありません。