假设我在git.fedorahosted.org上有一个存储库,我想将其克隆到我在github的帐户中,以拥有自己的游乐场,而不是在fedorahosted上更“官方”的回购。 最初复制的步骤是什么? 在github中有一个漂亮的“fork”按钮,但我不能使用这个明显的原因。

我如何跟踪fedorahosting回购到github的变化?


当前回答

您真的想简单地将本地存储库(及其本地分支等)推到新的远程,还是真的想在新的远程上镜像旧的远程(及其所有分支、标记等)?如果是后者,这里有一个关于如何正确镜像git存储库的很棒的博客。

我强烈建议你阅读这篇博客,了解一些非常重要的细节,但简短的版本是这样的:

在一个新目录下运行这些命令:

git clone --mirror git@example.com/upstream-repository.git
cd upstream-repository.git
git push --mirror git@example.com/new-location.git

其他回答

这个问题的答案已经被删除了,但有一个有用的链接:https://help.github.com/articles/duplicating-a-repository

重点是

0. create the new empty repository (say, on github)
1. make a bare clone of the repository in some temporary location
2. change to the temporary location
3. perform a mirror-push to the new repository
4. change to another location and delete the temporary location

OP的例子:

在本地机器上

$ cd $HOME
$ git clone --bare https://git.fedorahosted.org/the/path/to/my_repo.git
$ cd my_repo.git
$ git push --mirror https://github.com/my_username/my_repo.git
$ cd ..
$ rm -rf my_repo.git

您真的想简单地将本地存储库(及其本地分支等)推到新的远程,还是真的想在新的远程上镜像旧的远程(及其所有分支、标记等)?如果是后者,这里有一个关于如何正确镜像git存储库的很棒的博客。

我强烈建议你阅读这篇博客,了解一些非常重要的细节,但简短的版本是这样的:

在一个新目录下运行这些命令:

git clone --mirror git@example.com/upstream-repository.git
cd upstream-repository.git
git push --mirror git@example.com/new-location.git

首先,在Github上创建你的回购。然后将目录更改为签出的源存储库—假设您想要推送主分支。你需要执行5个简单的步骤:

git remote add origin2 https://github.com/user/example.git
git checkout master
git pull
git push origin2 master
git remote remove origin2

这将在本地回购和新的远程之间创建链接,签出并拉出源分支(以确保它有最新的分支),然后推入当前分支,最后从远程断开本地回购的链接。

在此之后,您的本地回购将是完整的,您可以像以前一样使用它。如果需要推送多个分支,可以根据需要多次重复签出-拉-推步骤,只需相应地更改分支名称即可。

如果你有现有Git存储库:

cd existing_repo
git remote rename origin old-origin
git remote add origin https://gitlab.com/newproject
git push -u origin --all
git push -u origin --tags

下面是手动执行git remote set-url origin[新回购URL]的方法:

Clone the repository: git clone <old remote> Create a GitHub repository Open <repository>/.git/config $ git config -e [core] repositoryformatversion = 0 filemode = false bare = false logallrefupdates = true symlinks = false ignorecase = true [remote "origin"] url = <old remote> fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master and change the remote (the url option) [remote "origin"] url = <new remote> fetch = +refs/heads/*:refs/remotes/origin/* Push the repository to GitHub: git push

你也可以同时使用两个/多个遥控器。