Git将现有的回购推到一个新的和不同的远程回购服务器?

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

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

626213 次浏览
  1. 在github创建一个新的回购。
  2. 将repo从fedorahosted复制到本地机器。
  3. # EYZ0
  4. # EYZ0
  5. # EYZ0

现在你可以使用它就像任何其他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

要将你现有的回购变为不同的,你需要:

  1. 首先克隆原始的回购。

    git clone https://git.fedorahosted.org/cgit/rhq/rhq.git
    
  2. Push the cloned sources to your new repository:

    cd rhq
    git push https://github.com/user/example master:master
    

You may change master:master into source:destination branch.


If you want to push specific commit (branch), then do:

  1. On the original repo, create and checkout a new branch:

    git checkout -b new_branch
    
  2. Choose and reset to the point which you want to start with:

    git log # Find the interesting hash
    git reset 4b62bdc9087bf33cc01d0462bf16bbf396369c81 --hard
    

    或者选择提交git cherry-pick附加到现有的HEAD

  3. 然后推送到你的新回购:

    git push https://github.com/user/example new_branch:master
    

    # EYZ2 < / p >

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

  1. 在temp-dir目录下创建一个本地存储库:

    Git克隆temp-dir

  2. 进入temp-dir目录。

  3. 查看ORI中不同分支的列表:

    git branch -a
    
  4. Checkout all the branches that you want to copy from ORI to NEW using:

    git checkout branch-name
    
  5. Now fetch all the tags from ORI using:

    git fetch --tags
    
  6. Before doing the next step make sure to check your local tags and branches using the following commands:

    git tag
    
    
    
    
    git branch -a
    
  7. Now clear the link to the ORI repository with the following command:

    git remote rm origin
    
  8. Now link your local repository to your newly created NEW repository using the following command:

    git remote add origin <url to NEW repo>
    
  9. Now push all your branches and tags with these commands:

    git push origin --all
    
    
    
    
    git push --tags
    
  10. You now have a full copy from your ORI repo.

我发现了一个解决方案使用set-url简洁明了,相当容易理解:

  1. 在Github创建一个新的回购
  2. cd到您本地机器上现有的存储库中(如果您还没有克隆它,那么请先执行此操作)
  3. # EYZ0
  4. # EYZ0

如果你有现有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]

例如:# EYZ0

现在,推和拉与新的回购挂钩。

然后像这样正常地推:

git push -u origin master

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

  1. 克隆存储库:git clone <old remote>
  2. 创建一个GitHub存储库
  3. < p > # EYZ0开放

    $ 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
    

    并更改remote (url选项)

    [remote "origin"]
    url = <new remote>
    fetch = +refs/heads/*:refs/remotes/origin/*
    
  4. Push the repository to GitHub: git push

You can also use both/multiple remotes.

将本地存储库链接到不同的远程存储库

< p > 1 - # EYZ0: 在项目文件夹内:

  • git rm .git(从本地存储库删除所有数据)
  • git status(我必须说它没有链接到任何东西,就像一个错误)

2 - # EYZ0

  • git init启动本地存储库
  • 链接到远程存储库
  • git remote -v确认它链接到远程存储库

3 - # EYZ0

  • git pullgit pull origin master --allow-unrelated-histories,如果本地和远程回购的git历史记录不同。
  • # EYZ0
  • # EYZ0
  • # EYZ0

就是这样!

从命令行推现有存储库

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设置

enter image description here

步骤2:在git/azure中添加指向不同存储库的新原点

enter image description here # EYZ0 < / p >

步骤3:现在你可以选择在git/azure的不同存储库中推送到新的原点

enter image description here

现在在新的存储库中有一个新的分支 # EYZ0 < / p >

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

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

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

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