';git add.&x27;不';行不通

';git add.&x27;不';行不通,git,repository,git-add,Git,Repository,Git Add,我目前正在尝试为一个我已经工作了一段时间的项目设置Git。我确实记得很久以前设置Git,但由于各种原因从未使用过它。现在我想使用它,我得到了一个奇怪的问题,我相信是有关旧安装 为了启动一个新的Ubuntu操作系统,我安装了一个新的Ubuntu操作系统,这样就不会有Git安装,我复制了这个项目(Grails)。然后,我导航到该目录并运行以下命令: git init git remote add origin https://USERNAME@bitbucket.org/USERNAME/APPN

我目前正在尝试为一个我已经工作了一段时间的项目设置Git。我确实记得很久以前设置Git,但由于各种原因从未使用过它。现在我想使用它,我得到了一个奇怪的问题,我相信是有关旧安装

为了启动一个新的Ubuntu操作系统,我安装了一个新的Ubuntu操作系统,这样就不会有Git安装,我复制了这个项目(Grails)。然后,我导航到该目录并运行以下命令:

git init

git remote add origin https://USERNAME@bitbucket.org/USERNAME/APPNAME.git
然后我跑:

git add .
这就是我得到以下错误的原因:

fatal: Not a git repository: /home/user/workspace/App_V3/.git/modules/plugins/grails-spring-security-ui
此错误很奇怪,因为它甚至与我所在的目录不匹配,因为目录如下:

/home/user/Workspace/App_V7/

我在想,最初我可能已经在旧操作系统的App_V3文件夹中设置了Git,但不知道为什么它仍然指向该目录,因为我已经运行了下面的代码来重新初始化它:

rm -rf .git
git init
有人能帮我解决这个问题吗?因为它真的很让人沮丧


提前感谢

我将所有文件一次一个地移动到一个新文件夹,然后似乎工作正常:)

感谢您的帮助

而不是

git init
git remote add origin https://USERNAME@bitbucket.org/USERNAME/APPNAME.git
你应该使用

git clone origin https://USERNAME@bitbucket.org/USERNAME/APPNAME.git .
因为您希望删除现有存储库,而不是重新创建它。

将存储库与子模块一起移动是有问题的 我在想,最初我可能已经在旧操作系统的App_V3文件夹中设置了Git

这就是问题的根源

重要的是最初创建存储库(或者更具体地说,引用的子模块)时的git版本

考虑一下在
vendor/awesome
中有一个子模块的存储库,git在创建子模块时的行为是完全不同的

git版本<1.7.8
vendor/awesome/.git
的内容是一个文件夹-就像任何git签出一样,例如签出的文件夹结构是:

.gitmodules
.git
    ...
vendor/
    awesome
        .git
            config
            HEAD
            index
            packed-refs
            ...
移动这种存储库没有问题,因为任何地方都没有存储路径

git版本1.7.8或1.7.9

用“git submodule init”填充新的子模块目录时, 子模块的$GIT_DIR元信息目录是在内部创建的 $GIT_DIR/modules//superproject和引用的目录 通过gitfile机制。这是为了使切换成为可能 超级项目中具有和不具有 树中的子模块,无需重新克隆

因此,
vendor/awome/.git
不是一个文件夹,而是一个包含以下内容的文件:

gitdir: /absolute/path/to/main/repo/.git/modules/vendor/awesome
总体文件夹结构为:

.gitmodules
.git
    ...
    modules
        vendor
            awesome
                config
                HEAD
                index
                packed-refs
                ...

vendor/
    awesome
        .git <- a file
这是一个非常可怕的变化-但是它引入了一个问题,因为绝对路径被用于引用位置

git版本>=1.7.10 在子模块中使用绝对路径时进行了修改

包含由管理的顶级超级项目的整个目录 “git子模块”可以移动到其他位置

现在
vendor/awesome/.git
如果使用此或更高版本的git生成,将包含:

gitdir: ../../.git/modules/vendor/awesome
.git/modules/vendor/awome/config
的内容指定了工作树的位置:

[core]
   ...
   worktree = /absolute/path/to/main/repo/vendor/awesome
[core]
   ...
   worktree = ../../../../vendor/awesome
同样,将这种存储库作为相对于主存储库的路径移动也没有问题

移动存储库 使用旧版本或新版本的git-您很好

如果您不幸处理了在1.7.8或1.7.9中创建的存储库(从问题中的证据来看似乎是这样的),并移动了存储库,则有:

  • 再次克隆
  • 子模块.git文件中的正确路径以及相应的工作树配置设置

  • 当你说你复制了这个项目时,它是否已经在git版本控制下了?如果存在
    .git
    文件夹,您可以在运行git init之前清除它。您所说的版本控制是什么意思?几年前我在另一个文件夹中安装了GIT,然后将此项目复制到一个新文件夹中。如上所示,我已经运行了“rmrf.git”,然后又运行了git init,但仍然遇到同样的问题。我这样做这是一个目录结构的问题,因为这是一个新的操作系统。即使当前工作目录中的
    .git
    被删除,git仍将在放弃之前在其他几个地方继续寻找它。如果在别处找到
    .git
    ,它将尝试使用它。查看此列表,查看文件系统中检查和删除过时的
    .git
    的位置列表。在
    应用程序V7
    中运行
    git rev parse--git dir
    时,输出是什么`运行以下命令时会发生什么情况?
    git status
    同时查找文件夹
    .git
    ,因为该文件夹所在的位置表示新git report的根目录我有git版本2.8,但我的子模块在版本1.7格式中:/是否有某种方法可以自动迁移到新格式?可能通过阅读答案,虽然您不需要迁移到新格式,但问题是我将存储库复制到了另一个目录,而且,由于它没有“迁移”到新格式,子模块失败,我不得不手动更新它们。真的很麻烦,不是所有的。所以我想知道tere是否是一种“迁移”到新格式的简单方法,这样我就可以将它发送给我的团队。。。