【问题标题】:git update last commit message for a specific filegit 更新特定文件的最后提交消息
【发布时间】:2020-10-10 10:02:33
【问题描述】:

在这种特殊情况下,我使用 1 个提交 = 1 个文件。

我知道对提交使用 --amend 选项会更新 LAST 提交,但是如何更新特定文件的最后提交消息?

这当然行不通:

git commit -o somefile.js -m "new message" --amend

我需要能够以非交互方式执行此操作,以便可以在单行命令中调用它。

有解决办法吗?

【问题讨论】:

  • 我不知道 Git 提交中的单个 文件 有单独的消息。是吗?
  • 谢谢,我一个一个地提交每个文件,我从不提交多个文件。
  • 那么你在问如何从一些较早的提交中更改提交消息。交互式变基是实现此目的的一种方法。
  • 您的“针对特定文件”是一条红鲱鱼,因为 git 中没有这样的操作。

标签: git


【解决方案1】:

git rebase -i <commit hash before the one you want to change>

您将看到一个提交列表。找到您要更改的提交。之后,将该行的第一个字母或单词(如果我没记错的话可能是ppick)更改为r(对于reword)。

保存并退出您在执行git commit 时的操作方式,您将看到您的默认文本编辑器和您要更改的提交消息。

在保存并退出之前进行所需的更改。在此之后您必须执行git push -f,因为您通过交互式变基更改了提交消息。

【讨论】:

  • 感谢您的建议,但我需要能够以非交互方式执行此操作
  • 无论你在做什么,你都是modifying the commit。我的建议与不使用交互式变基的其他建议具有相同的结果。我能想到的唯一一种情况是,如果您的系统没有文本编辑器,那么交互式变基将不可用。
【解决方案2】:

我认为提交每个文件不是一个好习惯,因为大多数时候 git 中的每个提交都应该在你的存储库中定义特定的更改或提供一些功能或错误修复,但是如果你想更改你的特定消息提交存储库你可以这样做:

$git checkout <your hash commit>
$git commit --amend -m "New message"
$git push --force repository-name branch-name

更安全的选择是使用:

$git push --force-with-lease repository-name branch-name

与 --force 不同,它将破坏其他人推送到分支的任何更改,如果上游对存储库进行更改,--force-with-lease 将中止。 如果需要针对较旧的提交修改消息,则可以使用交互式 rebase 工具:

【讨论】:

    猜你喜欢
    • 2017-02-18
    • 1970-01-01
    • 2015-11-09
    • 2016-04-02
    • 1970-01-01
    • 2021-10-22
    • 2018-08-23
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多