大约一个月前,当我用 git inited 编写最新的项目时,我在比项目根目录高一级的目录中运行了这个命令。
git init
因此,我的存储库在 ./project目录中,而不在 ./project/my-new-project目录中。我不知道为什么我之前没有意识到这个问题,但是我从来没有去寻找。Git 目录,直到现在。
./project
./project/my-new-project
有没有一种方法,在不影响我的项目的情况下,将存储库移动到适当的目录,然后告诉 git 项目的新基础是什么?只是移动目录是行不通的。Git 认为所有文件都被删除了。
使用 git-mv将文件“向上”移动到适当的位置,然后使用 git-rm移动到“ my-new-project”目录。
git-mv
git-rm
除非您已经创建了一些要保存的历史记录,否则最简单的方法可能就是删除 .git子目录并在正确的目录中重做 init。
.git
如果您使用 git 来解决这个问题,那么任何解决方案都必然会留下大量“移动这个文件到这里”的历史条目,这些条目实际上并没有改变,而是您在创建时修复了一个错误。还不如直接创造出来。
git filter-branch允许你用这种方式重写历史。 git filter-branch手册页甚至有你的案例 举个例子:
git filter-branch
为了重写存储库,使其看起来像 Foodir/是其项目根目录, 抛弃所有其他的历史: git filter-branch --subdirectory-filter foodir -- --all
为了重写存储库,使其看起来像 Foodir/是其项目根目录, 抛弃所有其他的历史:
git filter-branch --subdirectory-filter foodir -- --all
您可能想要 git clone回购到一个新的子目录之前(或之后?)git filter-branch运行。(在过滤器分支之前进行克隆并在新克隆上运行过滤器分支,这样做的好处是可以保留原来的 .git/目录作为备份,以防出现问题。)
git clone
.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选项记住所有文件更改。
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 reset --hard HEAD
它像魔法一样工作,对历史没有任何影响。- 注意。如果你已经做了一些改变,一定要在移动之前提交它们。Git 目录。
这里有两种方式:
Cd 错误目录 rm-rf. git 只需将. git 文件夹和 cd 删除到正确的目录即可。
Cd 错误目录 rm-rf. git
只需将. git 文件夹和 cd 删除到正确的目录即可。