Git修正提交(amend)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git修正提交(amend)相关的知识,希望对你有一定的参考价值。

参考技术A 修正提交的前提是你的提交没有推送到远程仓库,如果你尝试修正一个已经推送的提交,git会提示你要解决冲突(猜测可能修正提交对象和上一个提交对象相同)。
示例:

修正提交可以修改提交信息,修改提交的文件。git只会修正变化的部分,保留没有变化的部分。
效果演示:

如何跳过“git commit --amend”中的提交消息步骤? [复制]

【中文标题】如何跳过“git commit --amend”中的提交消息步骤? [复制]【英文标题】:How to skip the commit message step in "git commit --amend"? [duplicate] 【发布时间】:2011-07-15 12:17:15 【问题描述】:

我正在运行一个非常快速的代码-编译-测试循环,在这个循环中我经常修改对提交的更改。

例如:

# Make some changes
$ git commit -m "Added feature X"
# Compile, test
# Fix bugs
$ git commit -a --amend

修复错误后,我通常想要相同的提交消息。有没有办法让 git 跳过我的 EDITOR 并只使用原始提交消息?

【问题讨论】:

【参考方案1】:

您只需添加--no-edit 即可使用最后一条消息。此选项自 2005 年以来就存在,但直到最近才为 --amend 选项启用。

另一种方法是将-C HEAD 添加到带有修改选项的提交命令中。这使您不仅可以使用当前提交的消息,还可以指定您喜欢的任何其他引用,因此值得记住它。

这在从历史上的不同地方构建提交并使用这些提交的消息之一时特别有用。例如:

git checkout feature1^^ -- database/table1.sql
git checkout feature1^^^^ -- logger.py
git add -A && git commit -C feature1

这将只使用来自 feature1 的 2 次提交,并使用来自最后一次提交到 feature1 的提交消息 - 如果这是一个很好的描述。

【讨论】:

您应该注意,它还会复制上一次提交的时间戳,这可能是不可取的。 @Matthew 总的来说,--amend 是这样的。 另外,试试: git config --global alias.c 'commit -a --amend -C HEAD' @jleedev,如果您想更改时间戳并将作者设置为提交者,可以使用--reset-author(在这种情况下后者可能无关紧要)。【参考方案2】:

你也可以使用

--reuse-message=<commit>
Take an existing commit object, and reuse the log message and the authorship 
information (including the timestamp) when creating the commit.

这允许您使用以前的提交消息。这也可以是脚本或 git 别名的一部分。

【讨论】:

【参考方案3】:
git commit --amend --reuse-message HEAD 

将重用上次提交的消息

【讨论】:

【参考方案4】:

从 git 1.7.9 版本开始也可以使用git commit --amend --no-edit

【讨论】:

以上是关于Git修正提交(amend)的主要内容,如果未能解决你的问题,请参考以下文章

Git中使用amend解决提交冲突

如何跳过“git commit --amend”中的提交消息步骤? [复制]

GitGit 版本管理 ( 补充提交版本 git commit --amend | 版本库提取文件 git checkout -- filename | 删除文件 git rm )

GitGit 版本管理 ( 补充提交版本 git commit --amend | 版本库提取文件 git checkout -- filename | 删除文件 git rm )

Git撤销操作

git 修改已提交的注释