假设我在git.fedorahosted.org上有一个存储库,我想将其克隆到我在github的帐户中,以拥有自己的游乐场,而不是在fedorahosted上更“官方”的回购。 最初复制的步骤是什么? 在github中有一个漂亮的“fork”按钮,但我不能使用这个明显的原因。
我如何跟踪fedorahosting回购到github的变化?
假设我在git.fedorahosted.org上有一个存储库,我想将其克隆到我在github的帐户中,以拥有自己的游乐场,而不是在fedorahosted上更“官方”的回购。 最初复制的步骤是什么? 在github中有一个漂亮的“fork”按钮,但我不能使用这个明显的原因。
我如何跟踪fedorahosting回购到github的变化?
在github创建一个新的回购。 将repo从fedorahosted复制到本地机器。 Git远程重命名上游源 git远程添加源URL_TO_GITHUB_REPO Git push origin master
现在你可以使用它就像任何其他github回购。要从上游导入补丁,只需运行git pull upstream master && git push origin master。
这个问题的答案已经被删除了,但有一个有用的链接: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克隆https://git.fedorahosted.org/cgit/rhq/rhq.git 将克隆的源代码推到您的新存储库: cd rhq Git推送https://github.com/user/example master:master
您可以将master:master改为source:destination分支。
如果你想要推送特定的提交(分支),那么做:
On the original repo, create and checkout a new branch: git checkout -b new_branch Choose and reset to the point which you want to start with: git log # Find the interesting hash git reset 4b62bdc9087bf33cc01d0462bf16bbf396369c81 --hard Alternatively select the commit by git cherry-pick to append into existing HEAD. Then push to your new repo: git push https://github.com/user/example new_branch:master If you're rebasing, use -f for force push (not recommended). Run git reflog to see history of changes.
您真的想简单地将本地存储库(及其本地分支等)推到新的远程,还是真的想在新的远程上镜像旧的远程(及其所有分支、标记等)?如果是后者,这里有一个关于如何正确镜像git存储库的很棒的博客。
我强烈建议你阅读这篇博客,了解一些非常重要的细节,但简短的版本是这样的:
在一个新目录下运行这些命令:
git clone --mirror git@example.com/upstream-repository.git
cd upstream-repository.git
git push --mirror git@example.com/new-location.git
我也遇到过同样的问题。
在我的例子中,由于我在本地机器中有原始的存储库,所以我在一个新文件夹中创建了一个副本,没有任何隐藏文件(。git, .gitignore)。
最后,我将.gitignore文件添加到新创建的文件夹中。
然后,我已经从本地路径创建并添加了新的存储库(在我的情况下使用GitHub Desktop)。
试试这个如何移动一个完整的Git存储库
Create a local repository in the temp-dir directory using: git clone temp-dir Go into the temp-dir directory. To see a list of the different branches in ORI do: git branch -a Checkout all the branches that you want to copy from ORI to NEW using: git checkout branch-name Now fetch all the tags from ORI using: git fetch --tags Before doing the next step make sure to check your local tags and branches using the following commands: git tag git branch -a Now clear the link to the ORI repository with the following command: git remote rm origin Now link your local repository to your newly created NEW repository using the following command: git remote add origin <url to NEW repo> Now push all your branches and tags with these commands: git push origin --all git push --tags You now have a full copy from your ORI repo.
我用set-url找到了一个简洁易懂的解决方案:
在Github创建一个新的回购 CD到本地机器上现有的存储库中(如果您还没有克隆它,那么请先执行此操作) Git远程set-url origin https://github.com/user/example.git Git push -u origin master
如果你有现有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的repo URL,简单地指向新的repo:
git remote set-url origin [new repo URL]
例如:git remote set-url origin git@bitbucket.org:Batman/batmanRepoName.git
现在,推和拉与新的回购挂钩。
然后像这样正常地推:
git push -u origin master
下面是手动执行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
你也可以同时使用两个/多个遥控器。
将本地存储库链接到不同的远程存储库
删除与远程存储库的所有连接: 在项目文件夹内:
删除本地存储库中的所有数据 git状态(我必须说它没有链接到任何东西,有点像一个错误)
链接到一个新的远程存储库
git init启动本地存储库 Git远程添加原始urlrepository。链接到远程存储库 git remote -v确认它链接到远程存储库
3-向本地存储库添加更改并推送到远程存储库
Git pull或Git pull origin master——allow-unrelated-histories(如果本地和远程repo中的Git历史不同)。 git添加。 git commit -m" Message " Git push -u origin master
就是这样!
从命令行推现有存储库
git remote add origin https://github.com/AyadiAkrem/teachandgo.git
git branch -M main
git push -u origin main
这是帮助我推动我的本地项目到一个不同的回购git
git push https://github.com/yourusername/yourgithubproject.git master:master
Visual studio 2022和默认的git扩展甚至不需要一行命令就可以完美地工作。
步骤1:进入git设置
步骤2:在git/azure中添加指向不同存储库的新原点
步骤3:现在你可以选择在git/azure的不同存储库中推送到新的原点
现在在新的存储库中有了一个新的分支
首先,在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
这将在本地回购和新的远程之间创建链接,签出并拉出源分支(以确保它有最新的分支),然后推入当前分支,最后从远程断开本地回购的链接。
在此之后,您的本地回购将是完整的,您可以像以前一样使用它。如果需要推送多个分支,可以根据需要多次重复签出-拉-推步骤,只需相应地更改分支名称即可。
我做到这一点的方法是:
在github上创建一个新的repo (new-repo.git) CD old-repo/在本地机器上获取所有新的更改 Git push -u https://github.com/[username]/new-repo.git main -f 将新的远程repo https://github.com/[username]/new-repo.git克隆到本地环境
我发现这是一个简单的方法,基本上复制一个旧的远程回购到一个新的远程回购。