Git致命错误:'/ Users / username / Downloads / folder_name'在存储库外部

时间:2013-11-11 14:00:48

标签: git

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

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

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

2 个答案:

答案 0 :(得分:7)

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时(在我们的例子中是“project”),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

但是在你这样做之前the book开始,因为你似乎缺乏最基本的Git知识。

答案 1 :(得分:3)

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

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

注意:我不建议跟踪Downloads/文件夹,因为这本质上是不稳定的。 相反,跟踪Projects/

更有意义

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