如何修复一个失败的git提交?

21

我刚接触git,试图提交代码时遇到了问题,卡在了一个看起来像vi的编辑器里,对此我并不熟悉。我设法走出了这个编辑器,但我认为我用了错误的方法,因为我的git状态显示“更改未暂存”,但我仍然无法再次尝试。请问有什么方法可以解决这个问题,提交我的更改?

以下是错误信息:

fatal: Unable to create '/.git/index.lock': File exists.
If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

我没有拿出完整的路径。

感谢您一如既往的帮助。


1
看到完整的 git status 结果会很有帮助。 - jdl
2
请注意,您可以通过 git config --global core.editor EDITOR_NAME 命令更改用于提交消息的编辑器,其中 EDITOR_NAME 是您路径中的可执行文件(或完整路径)。 - Michael Mior
你可能想看一下这个问题,了解如何在Git中更改默认编辑器:https://dev59.com/i3VD5IYBdhLWcg3wWKLc - yasouser
3
rm -f ./.git/index.lock 这个方法对我有用, https://dev59.com/oGsz5IYBdhLWcg3wfn66 - RAJCHOW
@RAJCHOW 那对我也起作用了。我使用 CTR+Z 停止了另一个 git add -a 进程。 - ProfNandaa
4个回答

14

手动从.git目录中删除index.lock文件有效。

或者

从命令行执行:

$ rm -rf .git/index.lock

注意: 确保在.git目录下仅存在一个 index 文件。


11

假设你现在没有使用git(即不进行push、pull或运行任何git脚本),则可以手动删除锁定文件并重试。

另外,git需要一个“提交消息”来描述您的更改。如果您不想打开编辑器,则可以使用-m选项提供内联消息:

git commit -am "Changed this, that, and the other thing"

好的,假设这个工作了,当它打开vi时,我该如何保存并更改呢? - mcgrailm
@mcgrailm:我编辑了我的答案,请查看并告诉我是否有帮助。 - Platinum Azure
必须先添加每个文件,而不是使用git commit -a "更改了这个、那个和其他的东西",否则会收到“更改未暂存”的消息。 - mcgrailm
抱歉,我应该补充说明您需要先使用 git add 命令添加您的文件,否则可以使用 -a 标志来拉取所有已更改的内容。 - Platinum Azure

1
请注意,随着git 2.9(2016年6月)的推出,消息将得到改进并更加明确,以便在您自行删除锁定之前邀请您考虑所有原因。

请参见提交aed7480提交3030c29(2016年3月1日)由Matthieu Moy(moy完成。
协助者:Moritz Neeb(zormit
(由Junio C Hamano -- gitster --提交3b8c4b7中合并,2016年4月3日)

lockfile: 当锁文件存在时改进错误消息

导致用户看到此消息的常见错误是启动“git commit”,让编辑器打开(并忘记它),然后再次尝试提交。

以前的消息过于快速,以至于出现“git进程崩溃”的建议和“手动删除文件”的建议。

此补丁以两种方式修改消息:

  • 首先,它认为“另一个进程正在运行”是正常情况,而不是例外,
  • 并明确提示用户查看文本编辑器。

消息多了2行,但对于经验丰富的用户来说,这不是问题,因为他们不经常看到这条消息。


1

我的问题通过Platinum AzureSuhail Taj的回答得到了解决。

git commit -am "Changed this, that, and the other thing"

然后。
$ rm -rf .git/index.lock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接