如何更改我在git中做过的提交的文本

时间:2014-09-10 09:57:04

标签: git git-commit

我几次提交了一个提交,我在提交的文本中看到了一些拼写错误。据我所知,这个测试是为了让用户了解提交的内容并且对源文件没有影响,因此如果我更改它,它不会对其他开发人员造成任何问题。

我是否正确更改文本对其他开发人员没有影响?

如何更改文字?

我正在使用git和UI我正在使用Sourcetree。

3 个答案:

答案 0 :(得分:2)

虽然您可以使用交互式rebase 来更改过去的提交,但这样的操作将始终更改存储库的历史记录。

因此,在与团队合作时,您应该确保只更改未在遥控器中推送的提交;对于已经被推送的提交,你应该避免重写提交历史的操作,因为它会严重搞乱你的同事的存储库。

有问题的命令是git rebase --interactive,如果您想了解有关它的更多信息以及如何有效地使用它,您可以查看gitpro书籍的Rewriting History章节,回答你的问题。

答案 1 :(得分:2)

  

[...]所以,如果我改变它,它不应该与其他开发人员有任何问题。我是否正确地改变文本对其他开发者没有影响?

这完全取决于您是否与协作者分享了有问题的提交。

如果你有,更改提交消息(即使是纠正一个小错字)将(非常非常高的概率)更改该提交的提交ID(SHA1),进而更改其后代的提交ID (如果有的话)。这是历史改写的一种形式。

重写(或在某个阶段)公开的历史记录是有问题的,因为您的合作者'工作可能依赖于你的旧历史(即在错字修复之前你的回购历史)。

如果您公开提交了相关提交(例如,通过将包含它的一些本地分支推送到您的协作者也使用的远程仓库)并且您决定重写历史记录,那么您就是可能会让人失望。您的协作者可以通过执行以下任何或所有操作进行报复:

  • 在走廊里盯着你,
  • 让你绊倒并摔下楼梯,
  • 吐在你最喜欢的咖啡杯里。

这份清单并非详尽无遗,但您明白了。因此,如果有问题的提交已经公开,请在纠正其消息中的拼写错误之前三思而后行。

  

如何更改文字?

如果您已经开始更改有问题提交的消息,那么您应该做什么取决于有问题的提交是否是历史记录中其他提交的父级:

  • 如果是,如Zeeker在答案中所建议的那样,你必须求助于

    git rebase -i
    
  • 如果有问题的提交不是任何提交的父级,您只需使用

    即可
    git commit --amend
    

答案 2 :(得分:0)

如果您想编辑过去提交的文字而不影响他人的工作流程,建议您创建一个replacement commit

git replace --edit ‹commit›

这将打开一个编辑器,您可以在其中编辑提交消息以及有关作者,指针或时间戳的详细信息。在大多数操作中,生成的提交将用作原始提交的替代,而无需在基本级别修改历史记录。

根据How to push 'refs/replace' without pushing any other refs in git?,将这些替换件转让给其他开发人员可能需要明确

git push origin 'refs/replace/*'

在您身边,并且匹配

git fetch origin 'refs/replace/*:refs/replace/*'

适用于所有合作开发人员。那些不做后者的人仍会看到旧的措辞。