修改git中的第一条提交消息?
假设我有一个提交消息日志。有没有办法修改第一个提交消息?或者这就是为什么我们将第一个提交作为初始提交,因为它无法完成。您实际上无法更改任何提交。“修改”所做的(或在交互式重新基中“重写”)是创建一个新的、不同的提交副本。在这个副本中,您完全更改了需要更改的内容,其余内容都是一样的 这里的问题是,所有后续提交最终都指向原始的第一次提交,而不是副本。例如,假设正好有三个提交。让我们称它们为修改git中的第一条提交消息?,git,Git,假设我有一个提交消息日志。有没有办法修改第一个提交消息?或者这就是为什么我们将第一个提交作为初始提交,因为它无法完成。您实际上无法更改任何提交。“修改”所做的(或在交互式重新基中“重写”)是创建一个新的、不同的提交副本。在这个副本中,您完全更改了需要更改的内容,其余内容都是一样的 这里的问题是,所有后续提交最终都指向原始的第一次提交,而不是副本。例如,假设正好有三个提交。让我们称它们为A,B,和C。分支标签master,指向提交C。但是提交C指向B,B指向A。因为A是初始提交,所以链在这里结束(
A
,B
,和C
。分支标签master
,指向提交C
。但是提交C
指向B
,B
指向A
。因为A
是初始提交,所以链在这里结束(这就是为什么您知道提交是初始提交:它不指向任何人。)
为了使这一点有用,您现在必须同时复制B
和C
,对每一个进行一次更改:B
的副本,我们称之为B'
,必须指向A'
,而C
的副本必须指向B'
:
A <- B <- C <-- master
A' <- B' <- C'
现在可以安全地放弃原来的A-B-C
提交链,因为您已经复制了所有您关心的内容,同时进行了必要的更改,以使新的A'-B'-C'
链看起来像您希望的那样
通过使用git-rebase-i--root
可以一直返回到根提交。但与所有重定基址或任何其他“编辑历史记录”的方式一样,这将给那些获得您的作品的早期出版副本并相信您仍然拥有提交a-B-C
而不是新的a'-B'-C'
序列的人带来巨大的头痛。因此,如果您的存储库被其他人克隆或推送到其他人手中,请不要这样做,或者至少在没有与他们讨论之前不要这样做。您实际上无法更改任何提交。“修改”所做的(或在交互式重新基中“重写”)是创建一个新的、不同的提交副本。在这个副本中,您完全更改了需要更改的内容,其余内容都是一样的
这里的问题是,所有后续提交最终都指向原始的第一次提交,而不是副本。例如,假设正好有三个提交。让我们称它们为A
,B
,和C
。分支标签master
,指向提交C
。但是提交C
指向B
,B
指向A
。因为A
是初始提交,所以链在这里结束(这就是为什么您知道提交是初始提交:它不指向任何人。)
为了使这一点有用,您现在必须同时复制B
和C
,对每一个进行一次更改:B
的副本,我们称之为B'
,必须指向A'
,而C
的副本必须指向B'
:
A <- B <- C <-- master
A' <- B' <- C'
现在可以安全地放弃原来的A-B-C
提交链,因为您已经复制了所有您关心的内容,同时进行了必要的更改,以使新的A'-B'-C'
链看起来像您希望的那样
通过使用
git-rebase-i--root
可以一直返回到根提交。但与所有重定基址或任何其他“编辑历史记录”的方式一样,这将给那些获得您的作品的早期出版副本并相信您仍然拥有提交a-B-C
而不是新的a'-B'-C'
序列的人带来巨大的头痛。因此,如果您的存储库由其他人克隆或推送到其他人,不要这样做,或者至少在没有与他们讨论之前不要这样做。这太棒了,解释得很好,甚至像我这样的白痴也知道事情是如何运作的。这太棒了,解释得很好,甚至像我这样的白痴也知道事情是如何运作的。
A <- B <- C <-- master
A' <- B' <- C'
A <- B <- C
A' <- B' <- C' <-- master