Moving Git repository content to another repository preserving history
我试图使用以下命令将一个存储库(比如repo1)的内容移动到另一个现有的存储库(比如repo2);
git clone repo1 git clone repo2 cd repo1 git remote rm origin git remote add repo1 git push
号
但它不起作用。我查看了其他类似的帖子,但我只发现移动文件夹而不是内容。
我认为你需要的命令是:
1 2 3 4 5 6 | cd repo2 git checkout master git remote add r1remote **url-of-repo1** git fetch r1remote git merge r1remote/master --allow-unrelated-histories git remote rm r1remote |
号
在此之后,
这里完美描述了https://www.smashingmagazine.com/2014/05/moving-git-repository-new-server/
首先,我们必须将现有存储库中的所有远程分支和标记提取到本地索引中:
1 | git fetch origin |
我们可以检查是否有需要创建本地副本的丢失分支:
1 | git branch -a |
。
让我们使用新存储库的ssh克隆URL在现有本地存储库中创建新的远程:
1 | git remote add new-origin [email protected]:manakor/manascope.git |
现在,我们准备将所有本地分支和标记推送到新的远程新源站:
1 2 | git push --all new-origin git push --tags new-origin |
。
让我们将新原点设为默认远程:
1 | git remote rm origin |
。
将新原点重命名为"仅原点",使其成为默认的远程:
1 | git remote rename new-origin origin |
如果您希望保留现有的分支并提交历史记录,这里有一种对我有效的方法。
1 2 3 | git clone --mirror https://github.com/account/repo.git cloned-repo cd cloned-repo git push --mirror {URL of new (empty) repo} |
现在,假设您希望在一段时间内保持源和目标repos的同步。例如,您希望将当前远程回购中的活动引入新的/替换的回购。
1 2 3 | git clone -o old https://github.com/account/repo.git my-repo cd my-repo git remote add new {URL of new repo} |
。
要下拉最新的更新(假设没有本地更改):
1 2 3 | git checkout {branch(es) of interest} git pull old git push --all new |
号
注意:我还没有使用子模块,所以我不知道如果有子模块的话,还需要什么额外的步骤。
这可以将我的本地回购(包括历史)移动到远程github.com回购。在github.com上创建了新的空回购之后,我在下面的第三步中使用了该URL,它工作得很好。
1 2 3 4 | git clone --mirror <url_of_old_repo> cd <name_of_old_repo> git remote add new-origin <url_of_new_repo> git push new-origin --mirror |
号
我在:https://gist.github.com/niksumeiko/8972566找到了这个。
最简单的方法是,如果代码已经被Git跟踪,那么将新的存储库设置为"源站"以进行推送。
1 2 3 4 | cd existing-project git remote set-url origin https://clone-url.git git push -u origin --all git push origin --tags |
号
根据@dan cohn回复,推镜是你的朋友。这是我迁移repos的目的:
镜像存储库
1.打开Git Bash。
2.创建存储库的裸克隆。
1 | $ git clone --bare https://github.com/exampleuser/old-repository.git |
号
3.镜像推送到新存储库。
1 2 | $ cd old-repository.git $ git push --mirror https://github.com/exampleuser/new-repository.git |
号
4.删除在步骤1中创建的临时本地存储库。
1 2 | $ cd .. $ rm -rf old-repository.git |
号
参考和信用:https://help.github.com/en/articles/duplicating-a-repository
我使用下面的方法通过维护所有分支和提交历史记录将我的Git存储迁移到Gitlab。
将旧存储库克隆到本地。
1 | git clone --bare <STASH-URL> |
号
在Gitlab中创建一个空存储库。
1 | git push --mirror <GitLab-URL> |
号
看起来你很亲近。假设这不仅仅是你提交的文件中的错别字,那么步骤3应该是
1 2 3 4 5 6 7 8 | 1. git clone repo1 2. git clone repo2 3. cd repo2 4. git remote rm origin 5. git remote add repo1 6. git pull 7. git remote rm repo1 8. git remote add newremote |
这里有许多复杂的答案;但是,如果您不关心分支保存,您需要做的就是重置远程原点、设置上游和推送。
这有助于为我保留所有提交历史。
1 2 3 | cd <location of local repo.> git remote set-url origin <url> git push -u origin master |
。