假设我在git.fedorahosted.org上有一个存储库,我想将它克隆到我在github的帐户中,除了fedorahosted上更“官方”的回购之外,还有我自己的游乐场。 最初复制它的步骤是什么? 在github中有一个很好的“fork”按钮,但由于显而易见的原因我无法使用它。
我如何跟踪fedorahosted repo中的变化进入github?
答案 0 :(得分:640)
git remote rename origin upstream
git remote add origin URL_TO_GITHUB_REPO
git push origin master
现在你可以像任何其他github回购一样使用它。要从上游提取补丁,只需运行git pull upstream master && git push origin master
。
答案 1 :(得分:88)
这个问题的删除答案有一个有用的链接: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
答案 2 :(得分:36)
要将现有的仓库推送到不同的仓库,您需要:
首先克隆原始仓库。
git clone https://git.fedorahosted.org/cgit/rhq/rhq.git
将克隆的源推送到新的存储库:
cd rhq
git push https://github.com/user/example master:master
您可以将master:master
更改为source:destination
分支。
如果要推送特定的提交(分支),请执行:
在原始仓库中,创建并签出新分支:
git checkout -b new_branch
选择并重置为您要开始的位置:
git log # Find the interesting hash
git reset 4b62bdc9087bf33cc01d0462bf16bbf396369c81 --hard
或者选择git cherry-pick
提交以附加到现有HEAD。
然后推送到您的新仓库:
git push https://github.com/user/example new_branch:master
如果您正在变基础,请使用-f
进行强制推送(不推荐)。运行git reflog
以查看更改历史记录。
答案 3 :(得分:12)
您真的想简单地将本地存储库(带有本地分支机构等)推送到新的远程控制台,还是真的想要在新的远程控制器上镜像旧的远程(包括所有分支,标签等) ?如果后者在How to properly mirror a git repository上是一个很棒的博客。
我强烈建议您阅读博客中的一些非常重要的细节,但简短的版本是:
在新目录中运行以下命令:
git clone --mirror git@example.com/upstream-repository.git
cd upstream-repository.git
git push --mirror git@example.com/new-location.git
答案 4 :(得分:8)
试试这个How to move a full Git repository
使用以下命令在temp-dir目录中创建本地存储库:
git clone temp-dir
进入temp-dir目录。
要查看ORI中不同分支的列表,请执行以下操作:
git branch -a
使用以下方法检出要从ORI复制到NEW的所有分支:
git checkout branch-name
现在使用以下方法从ORI获取所有标签:
git fetch --tags
在执行下一步之前,请确保使用以下命令检查本地标记和分支:
git tag
git branch -a
现在使用以下命令清除ORI存储库的链接:
git remote rm origin
现在使用以下命令将本地存储库链接到新创建的新存储库:
git remote add origin <url to NEW repo>
现在使用以下命令推送所有分支和标记:
git push origin --all
git push --tags
您现在拥有ORI回购的完整副本。
答案 5 :(得分:7)
我找到了一个使用 set-url 的解决方案,简洁且相当容易理解:
cd
进入本地计算机上的现有存储库(如果尚未克隆它,请先执行此操作)git remote set-url origin https://github.com/user/example.git
git push -u origin master
答案 6 :(得分:3)
如果您有现有的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
答案 7 :(得分:2)
我遇到了同样的问题。
就我而言,由于我的本地机器中有原始存储库,因此我在一个没有任何隐藏文件(.git,.gitignore)的新文件夹中制作了副本。
最后,我将.gitignore文件添加到新创建的文件夹中。
然后我从本地路径创建并添加了新的存储库(在我的情况下使用GitHub Desktop)。
答案 8 :(得分:1)
这是手动进行git remote set-url origin [new repo URL]
的方式:
git clone <old remote>
打开<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
并更改遥控器(使用url选项)
[remote "origin"]
url = <new remote>
fetch = +refs/heads/*:refs/remotes/origin/*
将存储库推送到GitHub:git push
您也可以同时使用// multiple remotes。
答案 9 :(得分:0)
通过使用以下命令更改GIT存储库URL,只需指向新存储库:
git remote set-url origin [new repo URL]
示例:git remote set-url origin git@bitbucket.org:Batman/batmanRepoName.git
现在,推和拉已链接到新的REPO。
然后通常像这样推送:
git push -u origin master