我的 Git 存储库在错误的根目录中。我可以移动它吗? (. ./而不是./)

大约一个月前,当我用 git inited 编写最新的项目时,我在比项目根目录高一级的目录中运行了这个命令。

因此,我的存储库在 ./project目录中,而不在 ./project/my-new-project目录中。我不知道为什么我之前没有意识到这个问题,但是我从来没有去寻找。Git 目录,直到现在。

有没有一种方法,在不影响我的项目的情况下,将存储库移动到适当的目录,然后告诉 git 项目的新基础是什么?只是移动目录是行不通的。Git 认为所有文件都被删除了。

92005 次浏览

使用 git-mv将文件“向上”移动到适当的位置,然后使用 git-rm移动到“ my-new-project”目录。

除非您已经创建了一些要保存的历史记录,否则最简单的方法可能就是删除 .git子目录并在正确的目录中重做 init。

如果您使用 git 来解决这个问题,那么任何解决方案都必然会留下大量“移动这个文件到这里”的历史条目,这些条目实际上并没有改变,而是您在创建时修复了一个错误。还不如直接创造出来。

git filter-branch允许你用这种方式重写历史。 git filter-branch手册页甚至有你的案例 举个例子:

为了重写存储库,使其看起来像 Foodir/是其项目根目录, 抛弃所有其他的历史:

git filter-branch --subdirectory-filter foodir -- --all

您可能想要 git clone回购到一个新的子目录之前(或之后?)git filter-branch运行。(在过滤器分支之前进行克隆并在新克隆上运行过滤器分支,这样做的好处是可以保留原来的 .git/目录作为备份,以防出现问题。)

我遇到了相反的问题-必须将 git 根目录转移到父目录(从 project/src 转移到 project) 让我极度惊讶的是,下面的方法奏效了! !

src$ mv .git ../
src$ cd ..
project$ git add src
project$ git commit -a

Git 巧妙地检测到所有新文件都是旧文件的重命名版本,并且没有丢失历史记录

您可以尝试类似的东西... 移动。 git 文件夹,并添加文件再次提交

我来这里寻找一种方法来移动我的存储库 任何地方

以防万一,我不是唯一一个,这是我最后做的:

Https://git.wiki.kernel.org/index.php/gitfaq#how_do_i_clone_a_repository_with_all_remotely_tracked_branches.3f 我复制了一份我的回购文件,然后告诉它不要再复制了,所以文件就出现在那个新文件夹里了。(然后检查文件和日志是否已经出现。)保留旧的回购一段时间,以防万一..。

这样我就能在不丢失历史记录的情况下转移我的回购。

最好的问候, 黛娜

这对我很有效,并且保持了我所有的历史完好无损。来自不正确的根文件夹(意外初始化回购的父文件夹) :

移动文件夹:

mv .git thecorrectfolder/

重新初始化 git repo:

cd thecorrectfolder/
git init

重新添加所有文件、提交和推送:

git add .
git commit -am 'fixing things'
git push origin master

好了,去喝杯啤酒吧。

在重新初始化后提交 git repo 时,会得到如下输出:

rename {ethanode/coffee => coffee}/app.coffee (100%)

换句话说,父文件夹中的所有引用都被重命名以使用正确的文件夹。

Git 可以使用它们的散列记忆文件,

只需将 .git移动到根目录,并告诉 git使用 --all选项记住所有文件更改。

$ mv .git ../
$ cd ..
$ git add . --all
$ git status // => you can see all the files recognized as renamed 100%
$ git commit -m "Moves repo to root directory."

经历了同样的问题后,我最终的解决方案是:

  1. 将. git 文件夹移到需要的位置。
  2. 将目录更改为我刚才移动.git 到的文件夹
  3. 将文件夹内容重置为 git 认为应该是的值: git reset --hard HEAD
  4. 检查内容是否与 kdef3或其他比较工具匹配
  5. 在旧位置删除现在没有版本控制的文件。

它像魔法一样工作,对历史没有任何影响。- 注意。如果你已经做了一些改变,一定要在移动之前提交它们。Git 目录。

这里有两种方式:

  1. Cd 错误目录 rm-rf. git

  2. 只需将. git 文件夹和 cd 删除到正确的目录即可。