3

当我向 git 添加一个新项目时,我收到了这个错误。

Error - fatal: '/Users/username/Downloads/folder_name' is outside repository

如何解决这个错误?我想,我需要给出当前的工作目录。但是,不知道该怎么做..有人可以帮我解决这个问题吗?但是当我直接添加新文件时,它工作正常..非常感谢您的帮助..提前致谢。

4

2 回答 2

8

Git 无法跟踪存储库之外的文件,所以当你在做的时候

git add /Users/dineshkumar/Documents/sampleios

Git 从字面上告诉您:您尝试添加的路径位于您所在的初始化存储库之外。

存储库这个术语有点没有实际意义,所以让我们更清楚地说明。

通常你会像这样使用 Git:

$ mkdir project; cd project
$ git init
$ vim upload.php
...
$ git add upload.php
...
$ git commit

当你git init在一个目录(在我们的例子中是“项目”)中运行时,Git 在其中创建一个名为“.git”的特殊子目录——其中包含实际的存储库数据(对象和配置)——然后将封闭目录转换为工作树。 工作树包含您实际编辑并提交给 Git 以构建下一次提交的文件。

这种设计的关键特性是只有位于工作树中的文件才由 Git 管理。您不能git add从其他地方获取文件——只能从工作树中获取。因此,没有人使用完整路径调用git add,因为这没有任何意义。

我不确定你的困惑根源在哪里。如果您认为该git add命令应该将文件/目录从某处复制到工作树中,那您就错了。如果您不知道工作树并认为存储库能够跟踪文件系统树上的任意文件,那么您又错了——如果这是真的,克隆将如何工作?

您应该熟悉这个想法,git add不是将文件添加到存储库,而是将文件中的更改添加到所谓的暂存区域,从中进行下一次提交。添加当前未跟踪的文件只是这种情况的一个特例——这种添加只是整个文件的“更改”。

看着你的尝试,我可能会猜测你想/Users/dineshkumar/Documents/sampleios变成一个 Git 存储库。如果是这种情况,请执行

$ cd /Users/dineshkumar/Documents/sampleios
$ git init
$ git add .
$ git commit

但在你这样做之前,请先从这本书开始,因为你似乎缺乏最基本的 Git 知识。

于 2013-11-11T15:45:08.630 回答
3

假设您的目录/Users/username/Downloads/folder_name/位于 git-repository 中(例如,您正在跟踪/Users/username/Downloads/),只需执行以下操作:

cd /Users/username/Downloads/
git add folder_name/
git commit

注意:我不建议跟踪Downloads/文件夹,因为它本质上是易变的。相反,跟踪可能更有意义Projects/

git 工作台存储库是一个包含.git文件夹的目录。要将任何内容添加到存储库,它必须位于存储库中(即:在存储库的子目录中):您无法跟踪 git-repository 之外的文件夹/文件

于 2013-11-11T15:53:38.003 回答