Git添加存储库子目录返回'致命:[FOLDER]在存储库外部'

时间:2016-03-09 22:18:43

标签: git version-control

我有一个网站,我需要通过linux命令行将系统生成的文件和文件夹提交到现有的git存储库。

我已将repo拉到我的服务器,并且正在repo的子文件夹中写入文件,但是当我运行git add [FOLDER]/*时,它给出了一个错误,即该文件夹位于存储库之外。我不知道如何克服这个问题。我是git的新手,请帮忙!

2 个答案:

答案 0 :(得分:0)

如果没有看到实际的命令,我只能采取有根据的猜测。错误<blah> is outside repository通常来自于您尝试添加实际上不是存储库子目录的目录时。

例如,如果您尝试添加../blah之类的内容或使用/blah之类的绝对目录。

$ mkdir test
$ cd test
$ git init
Initialized empty Git repository in /Users/schwern/tmp/test/.git/
$ git add ../blah
fatal: ../blah: '../blah' is outside repository
$ git add /blah
fatal: /blah: '/blah' is outside repository

在向其添加文件之前,无需添加子目录。无论如何,Git都不会跟踪目录,只会跟踪这些目录中的内容。 git add subdir/*git add subdir(几乎)是相同的命令。

$ mkdir stuff
$ touch stuff/things
$ git add stuff/*
$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   stuff/things

但是应该避免使用git add subdir/*,因为它会遗漏像dotfiles这样的内容。

$ touch stuff/.dot
$ git add stuff/*
$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   stuff/things

Untracked files:
  (use "git add <file>..." to include in what will be committed)

    stuff/.dot

改为使用git add subdir

$ git add stuff
$ git status
On branch master

Initial commit

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   stuff/.dot
    new file:   stuff/things

答案 1 :(得分:0)

所以答案结果是我在使用git add / path / to / folder / *而不是cd / path / to / folder /时使用绝对路径; git add *;

出于某种原因,git并不喜欢绝对的路径并且正在窒息它。感谢大家的帮助!