当我尝试git commit --amend时,为什么会出现错误

时间:2013-02-27 17:51:42

标签: git

我想修改我刚才提交的提交消息,所以我试着这样做:

git commit --amend

(正如我通常那样),但我收到了一个错误:

Unable to find modified files; please check git status

现在这很奇怪,因为我没有尝试在提交中添加/删除文件,我只想更改消息,所以无论我是否修改了文件都无关紧要。

任何人都可以解释这个错误信息(理想情况下,我如何能够通过它)?

*编辑*

Mellowcandle要求我的git状态;在这里(或多或少):

# On branch some_branch
# Your branch is ahead of 'origin/some_branch' by 1 commit.
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   static/js/someFile.js
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   some/other/file
#   yet/another/file

*编辑#2 *

当我尝试git rebase -i(使用reword)时会出现同样的问题。

*编辑#3 *

根据GoZoner的要求,这是git config --list(略有匿名)的输出:

user.name=My Name
user.email=email@example.com
push.default=upstream
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
remote.origin.url=git@github.com:someGitHubAccount/Apps.git
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.deploy.remote=origin
branch.deploy.merge=refs/heads/deploy
...*more branches that look similar*

6 个答案:

答案 0 :(得分:2)

或者,您可以在当前提交的父级上执行交互式rebase

git rebase -i head~

然后选择reword选项以更改提交消息。

答案 1 :(得分:2)

检查您是否没有在提交时触发的自定义挂钩。

答案 2 :(得分:1)

git commit --amend将像git commit一样工作,只是它会回收您的旧提交。所以这意味着它会期望索引中确实存在一些变化,准备提交。

因此,如果您希望包含someFile.js,请先运行git add static/js/someFile.js。如果您还想跟踪未跟踪的文件,请使用git add some/other/file添加该文件。

答案 3 :(得分:1)

尝试git commit --amend --only,如果不起作用,请尝试git stash; git commit --amend ; git stash pop。我不确定你在这里的状态。

答案 4 :(得分:1)

git stash。然后做git commit --amend。 之后执行git stash pop

答案 5 :(得分:1)

适用于我,无论是否有经过修改的未跟踪文件。

$ echo 'a' > a; git add -A; git commit -m 'a'
$ echo 'b' > b; git add -A; git commit -m 'b'

$ git log --oneline
63f2dd1 b
a0b364a a
$ git commit --amend
$ git log --oneline
d4cdeb7 bxx            # changed the commit message
a0b364a a

$ ed a # edit 'a'
$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   a
#
no changes added to commit (use "git add" and/or "git commit -a")

$ git commit --amend
$ git log --oneline
2d20e6e bxxyy           # changed the commit message again
a0b364a a

$ mkdir foo; echo 'c' > foo/c
$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   a
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#   foo/
no changes added to commit (use "git add" and/or "git commit -a")

$ git commit --amend
ebg@ebg(31)$ git log --oneline
09c1b26 bxxyyzz
a0b364a a