我在github
上有一个私人存储库(比如说“ProjectX”)。项目要求在中途发生变化,这意味着必须重写代码。我不想失去已经在“ProjectX”上取得的进展,所以我做了以下几点:
git remote rm origin
还在GitHub上重命名了该项目
这很成功。在终端上执行
git remote add origin git@github-user:user/ProjectX_advanced.gitgit 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.
我之前看过一些问题here和here以及其他一些问题,表明我需要先执行git pull
并合并才能推送这些更改。
我的问题:
1.如果我执行git pull
,我的新“ProjectX”将被我不需要的代码覆盖。我该如何解决这个问题?
2.我已重命名所有遥控器(git remote -v
的输出符合预期)。我是否错过了重命名遥控器?
3.我该如何解决这个问题?
答案 0 :(得分:1)
你在GitHub上的新,但是尝试克隆它,然后从该克隆开始工作(而不是在本地初始化它,并推送到GitHub新的repo )。ProjectX
个回购应该是空的
这样,您可以在克隆过程中检查新的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
并推送代码以重命名存储库
$git remote set-url origin https://github.com/emample_user/Repo_project
$git add .
$git commit -m "message"
$git push -u origin master