【问题标题】:Exception "working tree already exists" while cloning GIT repo in pre-push hook在预推送挂钩中克隆 GIT 存储库时出现异常“工作树已存在”
【发布时间】:2016-03-17 10:28:46
【问题描述】:

我尝试在预推送脚本(客户端挂钩)中克隆我的本地 git 存储库。我得到了例外:

fatal: working tree '...' already exists.

我不明白这个异常,因为我显然将 repo 克隆到了不同的目录。

有什么想法吗?


我试过了:

unset GIT_DIR
cd ..
git clone ./TestTest/ /tmp/PrePushTestClone

失败的方式完全相同:(

【问题讨论】:

    标签: git clone githooks git-push


    【解决方案1】:

    我也遇到过。我意识到我在从git rebase -i 打开的 bash 会话中运行了git clone,该会话在环境中设置了 GIT_DIR 和 GIT_WORK_TREE。 退出 bash 会话解决了问题...

    【讨论】:

    • 感谢您为我指明正确的方向。在我的情况下(通过工具命令),我从 git gui 中打开了一个终端,并为该存储库设置了所有 Git 特定的环境变量。
    【解决方案2】:

    我遇到了同样的问题,除了我处理的是pre-commit 钩子。当尝试clone当前存储库中的另一个存储库时,出现如下错误:

    致命:工作树 '.'已经存在了。

    为了解决这个问题,我必须在 clone 之前添加这一行:

    unset GIT_WORK_TREE
    

    我在这里找到了这个解决方案:https://github.com/bower/bower/issues/1033

    【讨论】:

    • 完全不同的问题,但是这个环境变量覆盖了 -C 和一个特定的路径。
    • 为我工作。对于 Windows 用户,命令是:set GIT_WORK_TREE=(= 之后没有任何内容)
    【解决方案3】:

    因为我显然将 repo 克隆到了不同的目录。

    您的钩子可能会将$GIT_DIR 视为引用您当前的存储库,这会干扰git clone

    确保:

    • unset GIT_DIR 在你的预推送脚本中
    • git clone 在您当前 repo 文件夹外部的文件夹中

    【讨论】:

    • 我添加了我的 pre-push-script 的行。它仍然没有像这样工作。我做错了什么?
    • @user1879408 /tmp/PrePushTestClone 是否已经存在?理想情况下,它不应该存在。
    猜你喜欢
    • 2012-03-15
    • 1970-01-01
    • 2014-07-10
    • 2012-03-30
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    相关资源
    最近更新 更多