我的Git存储库位于错误的根目录中。 我可以移动它吗? (../ 代替 。/)

不知怎么的,当我在一个月前git init编辑了我的最新项目时,我在比我的项目根目录更高的目录中运行了这个命令。

所以我的仓库在./project目录下,而不是./project/my-new-project目录。 我不知道我以前怎么没有意识到这个问题,但直到现在我才从未查找.git目录。

有没有办法,不杀我的项目,将库移动到适当的目录,然后告诉git项目的新基地是什么? 只是移动目录不起作用。 Git认为所有的文件都被删除了。

也许最简单的事情,除非你已经创build了一些你想保存的历史logging,只要删除.git子目录,然后在正确的目录中重新初始化即可。

如果你使用git来解决问题,任何解决scheme都会留下很多“移动这个文件在这里”的历史logging,但实际上并没有发生变化,但是你在创build时就修正了这个问题。 更好地创build它是正确的。

我有相反的问题 – 必须将git根移到父目录(从项目/ src到项目)我非常惊讶,以下工作!

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

git聪明地检测到所有的新文件都被重命名为旧版本,并且没有任何历史logging丢失

你可以尝试类似的东西…移动.git文件夹,并在提交之前再次添加文件

git filter-branch让你以这种方式重写历史logging。 git filter-branch手册页甚至有你的案例:

重写仓库看起来好像foodir /是它的项目根源,并放弃所有其他历史:

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

您可能想要在git filter-branch运行之前(或之后)将repo git clone到新的子目录中。 (在过滤分支之前进行克隆,并在新克隆上运行filter分支将有一个好处,即将原始的.git/ dir保留在备用位置,以防发生错误。)

这为我工作,并保持我的历史完整。 从不正确的根文件夹(您意外初始化回购的父级):

移动文件夹:

 mv .git thecorrectfolder/ 

重新初始化git仓库:

 cd thecorrectfolder/ git init 

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

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

完成! 给自己一杯啤酒

当你重新初始化后提交git仓库时,你会得到一堆如下所示的输出:

 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." 

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

我来到这里寻找一种方法来移动我的资源库在任何地方

如果我不是唯一的一个,那么我最后做的是:

https://git.wiki.kernel.org/index.php/GitFaq#How_do_I_clone_a_repository_with_all_remotely_tracked_branches.3F我的“git克隆; – 镜像”达到我的回购裸露的副本,之后告诉它不再是裸露的,所以文件显示在那个新的文件夹中。 (然后检查是否有文件和日志出现。)保留一段时间的旧回购,以防万一…

这样我就能够移动我的回购而不会失去历史。

最好的问候,黛娜

刚刚经历了同样的问题,我最终的解决scheme是:

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

它像魔术一样运作,对历史没有影响。 – 注意如果你做了一些修改,确保在移动.git目录之前提交它们。

有两种方法:

  1. cd TheWrongDirectory rm -rf .git

  2. 只需删除.git文件夹,然后cd到正确的目录。