在 Git 中,更改当前分支上的最新提交 可以使用
--amend
选项来 git-commit
。
Fossil 中最接近的操作是什么?有没有 一种将 GPG 签名添加到未签名提交的方法 (
git commit --amend -S
)?
fossil amend 也可以只更新提交消息:
fossil amend COMMIT_ID -m 'my new commit message'
或
fossil amend COMMIT_ID -e # launch $EDITOR to revise message
(这些添加了一个带有新/修订消息的控制工件,Fossil 将显示该消息而不是原始消息。)
它还有其他功能:https://fossil-scm.org/fossil/help?cmd=amend
向提交添加签核的一种可能方法可能是:
fossil amend COMMIT_D --tag sign-off=my_name
您可以通过打开清单设置、检查该提交、生成 PGP/GPG 签名,然后将 PGP/GPG 签名添加到未签名的提交中
fossil amend COMMIT_ID --tag signature=SIGNATURE
当然,这比amend直接支持添加签名要难一些。
请注意,tag 命令提供了更多用于向现有提交添加/删除标签的选项。 https://fossil-scm.org/fossil/help?cmd=tag
有一种方法可以在 Fossil 中修改提交,就像在 git 中一样。 事实上,机制是相同的,但过程(以及保留的数据)不同。 这两个工具都会创建一个新的提交(git 不会比化石更多地修改原始提交),区别仅在于原始提交会发生什么。
在 git 中,旧的提交会悬空,直到最终永久
删除(除非已标记)。 在化石中,它被放在隐藏的树枝上并永久
保留(但如果需要,您仍然可以查看它)。
git amend
的流程是:先进行更改,然后更新repo数据库。 在化石中,相反 - 也可以在 git 中完成,如下所示。
化石(步骤 1 来自:https://fossil-scm.org/fossil/doc/trunk/www/shunning.wiki
):
$ # 1.
$ fossil amend abcd1234 --branch oops --hide
$ fossil up trunk
$ # 2.
$ fossil revert -r abcd1234
$ # 3.
$ $EDITOR the.file
$ fossil commit -m 'my new msg with amended code'
吉特:
$ # 1.
$ git reset --hard HEAD^
$ # 2.
$ git checkout abcd1234 .
$ # 3.
$ $EDITOR the.file
$ git commit -am 'my new msg with amended code'
在步骤 2 中,git 仍然知道旧的提交,因为它还没有被 gc - 你可以在引用日志中看到它。
git amend
只是走捷径,但对数据的操作是一样的。