另一个git进程似乎在这个存储库中运行

时间:2016-06-24 00:59:25

标签: git

我正在尝试学习如何使用Git,并创建了一个包含HTML,CSS和Javascript文件的小项目。我从我的基本空项目中创建了一个分支,然后对我的代码进行了一些更改。我尝试暂存更改,但收到以下错误消息:

Another git process seems to be running in this repository, e.g.
an editor opened by 'git commit'. Please make sure all processes
are terminated then try again. If it still fails, a git process
may have crashed in this repository earlier:
remove the file manually to continue.

当然,我确实遇到了问题,试图提前提交我的空项目,然后退出git bash,因为我不知道如何摆脱我以某种方式得到的地方。

我有什么方法可以解决这个问题,还是我应该开始一个新的存储库?

30 个答案:

答案 0 :(得分:816)

尝试删除index.lock目录中的.git文件。

rm -f .git/index.lock

当您同时执行两个git命令时,通常会出现此类问题;可能是一个来自命令提示符,另一个来自IDE。

答案 1 :(得分:50)

在应用程序的根目录中使用以下命令。这将删除index.lock文件并释放活动锁。

@Controller
public class ObjectResource {

    @RequestMapping(value = "/get_request/{param1}/{param2}")
    public ResponseEntity<\Object> getObjectDetails(@PathVariable String param1,@PathVariable String param2){
        return objectServiceBean.getObjectDetails(param1,param2);
    }

    @RequestMapping(value = "/post-request/",method=RequestMethod.POST)
    public ResponseEntity<Response> updateObjectDetails(@RequestBody String updateObjectString){
        JSONObject updateObject = null;
        Response response = new Response();
        Object object = new Object();
        try
        {
            updateObject = new JSONObject(updateObjectString);
        }
        catch(JSONException e)
        {
            response.setResponse("Incorrect JSON structure:" + e.toString());
            return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(response);
        }
        return objectServiceBean.updateObjectDetails(object);
    }
}

答案 2 :(得分:23)

删除我的提交消息对我有用。

rm .git/COMMIT_EDITMSG

然后说。

  

致命:无法锁定参考'HEAD':无法创建'.git / refs / heads / [your-branch-name] .lock':文件存在。

请注意您的分支名称可能与我的不同。您可以通过执行删除此锁定文件;

rm .git/refs/heads/[your-branch-name].lock

希望这有助于某人。

答案 3 :(得分:12)

好的,我最终通过运行&#39; $ git rm .git / index.lock来实现它的工作&#39; ...这很奇怪,因为我之前做了几次但没有用,但是嘿电脑对吗?

答案 4 :(得分:5)

它类似于上述方法,但在我的情况下,我有几个

[hybris@****platform]$ mysql -h <mysql-ip> -u hybris-user -p'password'
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 2188
Server version: 5.7.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| hybrisdatabase       |
+--------------------+
2 rows in set (0.01 sec)


MySQL [(none)]>  SHOW GRANTS FOR 'hybris-user'@'%';
+------------------------------------------------------------------+
| Grants for hybris-user@%                                      |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'hybris-user'@'%'                       |
| GRANT ALL PRIVILEGES ON `hybrisdatabase`.* TO 'hybris-user'@'%' |
+------------------------------------------------------------------+
2 rows in set (0.00 sec)

MySQL [(none)]> use hybrisdatabase;
Database changed
MySQL [hybrisdatabase]> show tables;
Empty set (0.01 sec)

并且能够通过这种方式立即删除所有

.git/refs/heads/<branch_name>.lock

答案 5 :(得分:4)

这发生在我身上,而sourcetree一直告诉我锁文件存在,那里没有这样的文件供我删除。所以我只检查了另一个分支,然后返回到原始分支,注意到这个更改解决了问题。

答案 6 :(得分:3)

如果您使用的是CocoaPods,并且在某个时候破坏了更新或安装(手动将其杀死),请尝试

1)删除index.lock文件(在.git/index.lock中)

2)删除您的Podfile.lock文件。

3)新建一个pod update

4)尝试发出失败的git命令(在我的情况下是git add .

答案 7 :(得分:3)

对我来说问题更简单,这是在源代码树中,所以我不确定它应用于常规解决方案有多少,但我不小心选择了我的主分支尝试进行提交而不是我的未提交的更改。

这通常不会成为问题,但我已经先发制人地输入了提交消息,这样我就可以跟踪我正在为我正在进行的那个小冲刺做些什么。

基本上,我在未提交的分支上开始提交,并且意外地尝试在我的主分支上启动另一个提交。

答案 8 :(得分:2)

可能是您的分支机构已损坏创建新分支 git branch#检查分支。我创建了一个新分支并开始工作。

branch -b "main"
git checkout -b "main"  #main is new branch
git add .
git commit -m "all files"
git remote add origin #**YOUR REPO**  https://github.com/tarun-techmarbles/wp-dump-sql-git-push.git
git push origin main  #push with new branch 

答案 9 :(得分:2)

对我来说,解决方案就像关闭我的IDE然后签出一样简单。我的一个队友接受了我的PR,并通过TFS合并了代码。删除.lock文件无效。

答案 10 :(得分:2)

如果您是 windows 用户,则会出现错误'rm' is not recognized as an internal or external command。这是因为rm是Linux命令。因此,在Windows中,您可以使用下面的方法删除index.lock文件夹中的.git文件

del -f .git/index.lock

答案 11 :(得分:1)

我遇到了同样的问题,问题是我试图使用大小为1.3gb的xml文件(用作数据集)推送代码,因此我将这些文件添加到.gitignore中然后问题解决了

答案 12 :(得分:1)

使用 SourceTree 遇到相同的问题。但是我的主机上根本没有任何 index.lock 文件。我找到了 packed-refs.lock 文件,并将其删除后,问题已解决。

答案 13 :(得分:1)

我遇到了同样的问题。我不得不做更多的事情来解决这个问题。首先,我删除了index.lock,然后从现有的git存储库位置克隆了新代码。我在单独的位置进行了代码更改。我对.git文件夹和.gitignore文件进行了管道传输,然后将其粘贴到更改代码的代码文件夹中。 然后,我尝试进行提交和推送,运行顺利。 如果您的问题不是上述给出的解决方案所能解决的,那么这种改进可能会有所帮助。

答案 14 :(得分:1)

如果您使用的是PowerShell,请使用

rm -Force .git/index.lock

答案 15 :(得分:1)

如果存储库具有子模块,则index.lock可能不仅存在于.git的根目录中,而且还可能存在于另一个子目录中。

要对其进行检查,请运行以下命令(或您喜欢的用于搜索文件的任何工具):

find .git -name index.lock

那么您可能会发现index.lock是这样的:

.git/modules/<path to your submodule>/index.lock

如果仅当您运行git submodule update时才显示错误,则值得尝试删除它。

答案 16 :(得分:1)

好吧,对我有帮助的就是简单地制作一个repo文件夹的副本,包括.git文件夹在内的所有内容,并从该副本进行工作。

  1. 我制作了一个repo文件夹
  2. 我导航到副本并删除了.git / index.lock文件,然后我就可以启动PR
  3. 我删除了原始回购文件夹
  4. 我将副本重命名为原始

对我有用。

答案 17 :(得分:1)

rm -f .git/index.lock没有帮助,因为我有一个无法删除的锁定文件。因此,index.lock也已被某些应用程序捕获。

我下载了Unlocker的替代方案,称为Lock Hunter,并删除了两个文件。 Git捕获了他们。

答案 18 :(得分:1)

尽管上面有替代方法,但这并不能解决我的问题。 就我而言,我删除了./zshrc中的“ git”插件并重新启动计算机,然后问题就消失了,我想zsh插件做了一些与原始git命令冲突的事情。

答案 19 :(得分:1)

使用以下命令,以防您遇到此存储库中似乎正在运行另一个git进程,例如 由“ git commit”打开的编辑器。请确保所有过程 终止,然后重试。如果仍然失败,则执行git进程 可能早些时候在此存储库中崩溃了: 手动删除文件以继续。

rm -f .git / index.lock

git reset 并在执行reset命令后使用git status,git add和git commit -a或git commit -m“您的消息”,即git push origin master。

答案 20 :(得分:0)

通过进入.git文件夹并手动删除HEAD.lock文件来解决该问题

答案 21 :(得分:0)

  • 我的 Mac 速度很慢,所以我运行了 2 个 git commit:一个被执行,第二个被第一个阻止。
  • 我试过rm -f .git/index.lock
    • rm .git/refs/heads/[your-branch-name].lock
  • <path to your repo>/.git/index.lock
  • <path to your repo>/.git/modules/<path to your submodule>/index.lock

@安库什:

  1. find | grep '\.lock$'
  2. rm -f ./.git/index.lock 这对检查很有用 - 没有 .lock 文件潜伏

我做了@Chole 所做的 - 退出我的 IDE 并再次查看 git-status。然后运行一个 $git add . $git commit -m'msg' $git push

它清除了正在运行命令的 2 个终端并解决了问题。希望这对某人有所帮助 - 诊断结果很好,所以谢谢大家,非常有帮助。

之前的 Mac 运行速度较慢 - 所以现在我只需稍等片刻,再运行与第一个冲突的第二个提交。

答案 22 :(得分:0)

我们可以通过删除 .git/ 目录中名为 index.lock 的文件来修复此错误:

rm -f .git/index.lock

这将清除 Git 索引上的缓存,以便您可以运行另一个 Git 命令。我们不需要使用 git rm 命令,因为 index.lock 不是我们跟踪的存储库的一部分。 index.lock 是一个隐藏的 Git 配置文件。让我们再次尝试提交我们的代码:

git add .

git commit

答案 23 :(得分:0)

如果根据问题的标题在此处结束(“此存储库中似乎正在运行另一个git进程”),请注意,如果此问题的标题中的消息前面带有已接受的答案,则该回答将不直接适用于您另一则消息如下:

fatal: cannot lock ref 'HEAD': Unable to create '/<PATH>/<TO>/<REPO>/.git/refs/heads/<BRANCH>.lock': File exists.

在这种情况下,您应该删除该文件(.lock)而不是.git / index.lock

答案 24 :(得分:0)

只是为了澄清,对于那些想知道为什么rm和del的人。

rm .git/index.lock - on a unix/linux system
del .git/index.lock - on a windows cmd prompt

您可以添加-f来强制操作 这样可行。

答案 25 :(得分:0)

出于任何原因对我来说:

rm .git/index.lock

没有用,所以我只是转到.git文件并将其手动删除,效果非常好。

答案 26 :(得分:0)

我尝试删除.git/index,但没有成功,最终我卸载了go并删除了其中所有带有go名称的文件夹,然后再次安装go,然后它工作了!

答案 27 :(得分:0)

万一可以帮助别人... 我在命令行rm -f .git/index.lock中尝试过,但没有工作(终端未显示任何错误)。我只是直接转到文件夹.git并删除了index.lock文件。

注意:.git文件夹位于您的根存储库中,并且已隐藏。在Mac中:Cmd + Shift + .以查看隐藏的文件。

答案 28 :(得分:0)

当我尝试在SourceTree中暂存文件时,我也面临着同样的问题。

要解决此问题,请转到项目目录中的.git文件夹,然后手动删除index.lock,即可完成。

答案 29 :(得分:0)

pod update时出现此错误。我通过删除index.lock的{​​{1}}目录中的cocoapods文件来解决它。

.git

这可能会帮助某人。