假设我在git.fedorahosted.org上有一个存储库,并且我想将此存储库克隆到我在github上的帐户中,以便在fedorahosted上更“正式” 的存储库之外拥有自己的游乐场。最初将其复制过来的步骤是什么?在github中有一个漂亮的“ fork”按钮,但是出于明显的原因我不能使用它。
我将如何跟踪在fedorahosted存储库中到github的更改?
假设我在git.fedorahosted.org上有一个存储库,并且我想将此存储库克隆到我在github上的帐户中,以便在fedorahosted上更“正式” 的存储库之外拥有自己的游乐场。最初将其复制过来的步骤是什么?在github中有一个漂亮的“ fork”按钮,但是出于明显的原因我不能使用它。
我将如何跟踪在fedorahosted存储库中到github的更改?
Answers:
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
。
origin
规范的远程约定,它指向规范的远程位置。在这种情况下,github的位置可能是规范的。
git remote add
。然后,您可以通过在中明确指出遥控器来推送到其中之一git push
。例如git push foobar master
,将当前分支推送到master
远程foobar
。
有一个有用的链接,这个问题的答案已删除: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
error: failed to push some refs to 'https://github.com/username/testrep.git'
要将现有存储库推入其他存储库,您需要:
首先克隆原始存储库。
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
以查看更改历史记录。
git push ... old_branch_name:new_branch_name
让你从旧仓库推送特性分支作为新的存储库的主分支。有用的!
您是否真的要简单地将本地存储库(及其本地分支等)推送到新的远程服务器上,还是真的要在新的远程服务器上镜像旧的远程服务器(及其所有分支,标签等)?如果是后者,这是一个有关如何正确镜像git存储库的好博客。
我强烈建议您阅读博客,以获取一些非常重要的细节,但是简短的版本是这样的:
在新目录中,运行以下命令:
git clone --mirror git@example.com/upstream-repository.git
cd upstream-repository.git
git push --mirror git@example.com/new-location.git
试试这个方法如何移动完整的Git存储库
使用以下命令在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
现在,使用以下命令将本地存储库链接到新创建的NEW存储库:
git remote add origin <url to NEW repo>
现在,使用以下命令推送所有分支和标签:
git push origin --all
git push --tags
您现在可以从ORI仓库中获得完整副本。
如果您有现有的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,.gitignore)的新文件夹中进行了复制。
最后,我将.gitignore文件添加到了新创建的文件夹中。
然后,我从本地路径创建并添加了新的存储库(在我的示例中是使用GitHub Desktop)。
这是一种手动方法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
您也可以同时使用/ 多个遥控器。