重命名仓库并推送新代码

时间:2013-09-28 11:23:22

标签: git version-control github

我在github上有一个私人存储库(比如说“ProjectX”)。项目要求在中途发生变化,这意味着必须重写代码。我不想失去已经在“ProjectX”上取得的进展,所以我做了以下几点:

  1. 在本地存储库中将“ProjectX”重命名为“ProjectX_advanced”。
  2. 重命名远程原点:
  3. git remote rm origin
    git remote add origin git@github-user:user/ProjectX_advanced.git
    还在GitHub上重命名了该项目 这很成功。在终端上执行git remote -v显示以下内容:

    origin  git@github-user:user/ProjectX_advanced.git (fetch)
    origin  git@github-user:user/ProjectX_advanced.git (push)  
    

    我也可以将更改推送到上述存储库 3.在github上创建了一个名为“ProjectX”的新仓库 4.在我的本地存储库中创建了一个名为“ProjectX”的新项目 5.初始化的git就像这样:
    git init
    git add .
    git commit -m "First commit" .

    6.添加了一个新的远程原点,如下所示:
    git remote add origin git@github-user:user/ProjectX.git
    如果我现在在命令行上执行git remote -v,我会得到正确的远程位置 7.当我现在尝试将本地存储库中的更改推送到github存储库时,问题就出现了:
    git push origin master
    看到错误消息::

    To git@github-user:user/ProjectX.git
     ! [rejected]        master -> master (non-fast-forward)
    error: failed to push some refs to 'git@github-user:user/ProjectX.git'
    To prevent you from losing history, non-fast-forward updates were rejected
    Merge the remote changes (e.g. 'git pull') before pushing again.  See the
    'Note about fast-forwards' section of 'git push --help' for details.   
    

    我之前看过一些问题herehere以及其他一些问题,表明我需要先执行git pull并合并才能推送这些更改。
    我的问题:
    1.如果我执行git pull,我的新“ProjectX”将被我不需要的代码覆盖。我该如何解决这个问题? 2.我已重命名所有遥控器(git remote -v的输出符合预期)。我是否错过了重命名遥控器?
    3.我该如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

你在GitHub上的新ProjectX个回购应该是空的,但是尝试克隆它,然后从该克隆开始工作(而不是在本地初始化它,并推送到GitHub新的repo )。

这样,您可以在克隆过程中检查新的ProjectX回购确实是空的 ......可能不是这样的情况!

OP Sriram的回答显示GitHub在GitHub上进行回购初始化期间创建了README.md


另外,正如我在" How do I rename a repository on GitHub?"中所提到的,自2013年5月起,当您在GitHub上重命名回购时:

  在这种情况下,我们会自动将以前存储库位置的所有请求重定向到新家。

这就是可能发生的事情,你的推送可能会在(重命名的)ProjectX_advanced中结束 这应该很快解决,当GitHub意识到有一个旧的名称为ProjectX的新回购时,并将重定向移除到ProjectX_advanced

答案 1 :(得分:0)

我按照@ VonC的建议,将ProjectX克隆到另一个本地目录中,如下所示:
cd destDir (directory where a clone of ProjectX should be created)
git clone git@github-user:user/ProjectX.git

这创建了克隆并显示即使在GitHub上ProjectX也是空的。 ProjectX的内容是README.md文件和gitignore文件。将这些更改提取到存储库不会产生太大的影响,因为Readme.md会被添加并且gitignore会更改。如此拉动变化:
本地ProjectX目录中的git pull origin master更新了上述两个文件。然后,我可以使用git push origin master推送更改。

答案 2 :(得分:0)

首先从github克隆代码

git clone https://github.com/emample_user/my_repo_project.git

之后

如果要将 my_repo_project 更改为 Repo_project

  1. 转到远程主机(例如https://://github.com/emample_user/my_repo_project)。
  2. 设置
  3. 更改存储库名称

并推送代码以重命名存储库

$git remote set-url origin https://github.com/emample_user/Repo_project
$git add .
$git commit -m "message"
$git push -u origin master