【问题标题】:destination path already exists and is not an empty directory目标路径已存在且不是空目录
【发布时间】:2018-10-25 22:23:32
【问题描述】:

我克隆了一个 git 存储库,但不小心搞砸了。于是我重新克隆了,消息就出现了:

目标路径已存在且不是空目录

我已尝试在我的 mac 中使用目标路径的名称删除文件夹,但没有成功。

我对编码非常陌生,因此我们将不胜感激。

【问题讨论】:

标签: git


【解决方案1】:

说明

这很模糊,但我会尽我所能提供帮助。

首先,虽然一开始可能会让人望而生畏,但我建议您学习如何从命令行(在 OSX 上称为终端)进行操作。这是确保您将东西放在真正想要的地方的好方法。

您绝对应该使用 google 'unix commands' 来了解更多信息,但这里有一些重要的命令可以帮助解决这种情况:

ls - 列出当前目录下的所有文件和目录(文件夹)

cd <input directory here without these brackets> - 更改目录,或更改您正在查看的文件夹

mkdir <input directory name without brackets> - 创建一个新目录(注意,创建后必须 cd 进入该目录)

rm -r <input directory name without brackets> - 删除目录和其中的所有内容

git clone <link to repo without brackets> - 将存储库克隆到您当前正在浏览的目录中。

回答

因此,在我的计算机上,我将运行以下命令以在我的文档文件夹中创建一个名为 projects 的目录(文件夹)并在那里克隆一个 repo。

  1. 打开终端
  2. cd documents(在 mac 上不区分大小写)
  3. mkdir projects
  4. cd projects
  5. git clone https://github.com/seanbecker15/wherecanifindit.git
  6. cd wherecanifindit(如果我想进入目录)

附言wherecanifindit 只是我的 git 存储库的名称,而不是命令!

【讨论】:

  • 如果我收到您遇到的错误,我会进入项目目录并运行rm -rf wherecanifindit,就像其他人所说的那样。 rm 删除文件,rm -r 删除目录,rm -f 停止命令行向您提问。把所有这些放在一起,你就会得到rm -rf
【解决方案2】:

当您尝试在仍包含.git 文件夹(隐藏文件夹)的文件夹中克隆存储库时,会出现此错误。

如果之前的答案不起作用,那么您可以继续我的答案。希望它能解决您的问题。

打开终端并将目录更改为目标文件夹(您要克隆的位置)。

现在输入:ls -a

您可能会看到一个名为 .git 的文件夹。

您必须通过以下命令删除该文件夹:rm -rf .git

现在您可以克隆您的项目了。

【讨论】:

  • 然而,当没有.git 文件夹时也会出现。例如,如果您使用 PyCharm 创建一个项目文件夹,您将拥有一个 .idea 文件夹。我认为 OP 需要的是一种“强制”git 克隆 repo、覆盖与否的方法(尽管在上述情况下甚至不需要覆盖)。
【解决方案3】:

获取此错误的步骤;

  1. 在文件夹中克隆一个 repo(例如取名为 xyz)
  2. 不要尝试在同一文件夹中再次克隆。即使手动删除文件夹后也会出现此错误,因为删除文件夹不会删除 git info。

解决方案: rm -rf "repo 文件夹的名称,如果是 xyz"。所以

rm -rf xyz

【讨论】:

    【解决方案4】:

    这只是意味着 git clone 将文件从 github 复制下来并将它们放入一个文件夹中。如果您再次尝试这样做,它不会让您这样做,因为它无法克隆到包含文件的文件夹中。因此,如果您认为 git clone 没有正确完成,只需删除该文件夹并再次执行 git clone。克隆会创建一个与 git 存储库同名的文件夹。

    【讨论】:

    • 我删除了文件夹,但它仍然显示编辑:好的,我是个白痴,它没有正确删除
    【解决方案5】:

    对我有用的是,我创建了一个不包含任何其他文件的新文件夹, 并选择我创建的新文件夹并将克隆放在那里。

    希望对你有帮助

    【讨论】:

    • 您好,欢迎来到 SO。非常像James Knott's answer,解决方案确实是在其他地方克隆存储库。
    【解决方案6】:

    创建一个新目录,然后使用 git clone url

    【讨论】:

      【解决方案7】:

      如果您得到Destination path XXX already exists,则表示您尝试克隆的项目存储库的名称已经存在于该当前目录中。所以请交叉检查并删除任何现有的并尝试再次克隆它

      【讨论】:

        【解决方案8】:

        我在使用cygwin 安装nvm 时遇到了同样的问题

        事实上,目标目录是空的,但使用了git 二进制文件是来自windows 的目录(而不是来自cygwin git packagegit)。

        安装cygwin git package后,从nvm安装git clone就ok了!

        【讨论】:

        • 当前的问题是尝试在已经是 git 存储库的位置克隆存储库。这个答案对此没有帮助。
        • @DaemonPainter 您的评论在很多情况下通常是正确的,但我不明白为什么您对其余的投反对票。给定问题的解决方案并不总是一个唯一的答案,因为它取决于您的上下文。你的行为对任何人都没有帮助。
        【解决方案9】:

        如果您已经有需要推送到 Github/Server 的文件,则可以采用一种设计方法来解决此问题:

        1. 在您的存储库所在的 Github/Server 中:

          • 创建空的 Git 存储库(保存 <YourPathAndRepoName>
          • $git init --bare
        2. 本地计算机(放入任意文件夹):

          • $touch .gitignore
          • (将要在文本编辑器中忽略的文件添加到 .gitignore)
          • $git clone <YourPathAndRepoName>

          • (这将使用来自 Github/Server 的 Repo 名称创建一个空文件夹)

          • (合法地从任何地方复制和粘贴您的所有文件,然后将它们粘贴到这个空的 Repo 中)

          • $git add . && git commit -m "First Commit"

          • $git push origin master

        【讨论】:

        • 他需要克隆,但正在尝试克隆到已经是 git 存储库的位置。这个答案对此没有帮助。
        • @DaemonPainter 问题指出他们已尝试删除文件夹;因此,假设他们在rm -f path 之后尝试重新启动,但他们仍然有文件要提交到最初为空的 git repo。
        • 是的,但提问者在this answer 下发布的评论指出“我是个白痴,我没有正确删除它”。对我来说,提问者似乎承认提议的解决方案是尝试克隆到现有的存储库中......
        【解决方案10】:

        对于那些希望在已经包含文件/文件夹的现有文件夹中克隆 repo 的人,试试这个:

        cd /
        git init
        git remote add origin <your-repo>
        git pull
        git checkout master -f
        

        此示例适用于根文件夹。更改“/”以指向您的特定文件夹

        【讨论】:

          【解决方案11】:

          使用命令:ls -a 您将看到阻止它的文件或文件夹的列表。 使用命令:rm -r 文件夹名/文件名

          删除所有文件和文件夹后。你可以克隆你的项目到目录

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-09-26
            • 1970-01-01
            • 1970-01-01
            • 2019-11-09
            • 2021-08-27
            • 1970-01-01
            • 2012-07-17
            相关资源
            最近更新 更多