当我向git添加一个新项目时,我收到了这个错误。
Error - fatal: '/Users/username/Downloads/folder_name' is outside repository
如何解决此错误?我想,我需要提供当前的工作目录。但是,不知道该怎么做。任何人都可以帮我解决这个问题吗? 但是当我直接添加新文件时,它工作正常.. 非常感谢您的帮助。谢谢。
答案 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>