3

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

  1. 在本地存储库中将“ProjectX”重命名为“ProjectX_advanced”。
  2. 像这样重命名远程源:

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: 6. 像这样添加了一个新的远程源: 如果我现在在命令行上执行,我会得到正确的远程位置。 7. 当我现在尝试将本地 repo 中的更改推送到 github repo 时出现问题: 看到的错误消息::
git init
git add .
git commit -m "First commit" .


git remote add origin git@github-user:user/ProjectX.git
git remote -v

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.   

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

4

3 回答 3

6

首先从github克隆代码

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

在那之后

如果要将my_repo_project更改为Repo_project

  1. 转到远程主机(例如,https‍://github.com/eample_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
于 2018-11-02T09:41:07.763 回答
1

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

这样,您将在克隆期间检查新ProjectX存储库是否确实为空。
......情况可能并非如此!

OP Sriram的回答显示,README.md在 GitHub 端的 repo 初始化期间,GitHub 创建了一个。


另外,正如我在“如何在 GitHub 上重命名存储库? ”中提到的,自 2013 年 5 月以来,当您在 GitHub 上重命名存储库时:

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

这就是这里可能发生的事情,您的推送可能最终会出现在 (renamed)ProjectX_advanced中。
这应该很快解决,当 GitHub 意识到有一个旧名称的新 repo 时ProjectX,并删除重定向到ProjectX_advanced.

于 2013-09-28T11:58:24.333 回答
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 会改变。像这样拉取更改:
git pull origin master在本地 ProjectX 目录中更新了上述两个文件。然后我可以使用git push origin master.

于 2013-09-28T19:21:17.567 回答