首页 > 解决方案 > git commit --fixup hash 什么都不做

问题描述

我有一个要修复的提交。我究竟做错了什么?

git commit --fixup bdf55a7c12996e3af853c27ca4ff6c670e826c5e
On branch foo
nothing to commit, working tree clean
git --version
git version 2.31.0

标签: gitgit-commit

解决方案


您似乎认为这git commit --fixup会更改现有提交。它没有。git commit --fixup并且git commit --squash是历史改写的一部分,但它们只是解决方案的一部分。

git commit --fixup不会更改您指向的提交。它在当前分支的头部创建一个新的提交,主题是从给定的提交中构造的,并在fixup! 前面加上单词。提交是包含当前更改的常规提交,因此可以使用git addgit commit -a --fixup添加和提交更改。

在那次运行之后git rebase --interactive --autosquash——这是执行修复/压缩的主要命令。该命令对提交进行重新排序,并为您提供修复/壁球的提交列表。验证列表并退出编辑器。git rebase将运行修复或压缩提交。

了解如何将所有内容组合在一个巧妙的别名中:https ://blog.filippo.io/git-fixup-amending-an-older-commit/

[alias]
        fixup = "!f() { TARGET=$(git rev-parse "$1"); git commit --fixup=$TARGET ${@:2} && EDITOR=true git rebase -i --autostash --autosquash $TARGET^; }; f"

要使用它:

git fixup bdf55a7c12996e3af853c27ca4ff6c670e826c5e

推荐阅读