【发布时间】:2017-05-05 17:49:29
【问题描述】:
在 Git 中,更改当前分支上的最新提交
一个使用--amend 选项到git-commit。
Fossil 中最接近的操作是什么?有没有
一种将 GPG 签名添加到未签名提交 (git commit --amend -S) 的方法?
【问题讨论】:
在 Git 中,更改当前分支上的最新提交
一个使用--amend 选项到git-commit。
Fossil 中最接近的操作是什么?有没有
一种将 GPG 签名添加到未签名提交 (git commit --amend -S) 的方法?
【问题讨论】:
在化石中,没有办法修改提交。如“Deleting content from Fossil” 中所述,
Fossil 旨在永久保存所有历史内容。
但是,如果需要,您可以回滚提交并使用适当的 GPG 签名重做。
【讨论】:
--amend 的目的:润色元数据,而不是提交内容。
有一种在 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'd - 你可以在 reflog 中看到它。
git amend只是走捷径,但对数据的操作是一样的。
【讨论】:
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
当然,这比直接支持添加签名的修改要难。
【讨论】: