将新应用推送到现有Git存储库

时间:2011-05-16 08:49:51

标签: git github

我在Github上有一个现有的Git存储库。

我想重新组织我的代码,所以我开始了一个新项目,我们称之为NewApp。我通过调用git init将NewApp文件夹放入git存储库。

然后我进行了更改并提交了它们。

然后我添加了存储库

git remote add github github@github.com:myAccount/myRepo

我现在想要推送到名为development的分支下的存储库。所以我使用git push github development

之后我收到错误错误:无法将某些引用推送到git@github.com:myAccount/myRepo.git

我可以在互联网上找到的所有解释都建议您首先必须从此分支机构执行git pull。我不想这样做,因为它会给我一些完全不同的旧代码。但无论如何我都做了,然后更改了代码,但它仍然不适合我。

发生了什么事。为什么你不能只覆盖当前特定分支中的内容?

2 个答案:

答案 0 :(得分:4)

通过创建新的仓库(git init),您实际上正在进行新的根提交,您将无法推送到现有的仓库。

git pull无法解决任何问题,因为仍会有两个root提交。

对于您的重组,我宁愿建议从现有提交中创建一个分支(意思是,克隆您现有的仓库并在该克隆仓库中建立分支),而不是初始化一个全新的仓库。

答案 1 :(得分:2)

我认为错误failed to push some refs的出现是因为:

git push github development

......相当于:

git push github development:development

...换句话说,将本地分支development推送到远程分支development。由于远程分支将在推送时创建(如果它尚不存在),我猜您的本地分支称为master,并且没有名为development的本地分支。假设您希望在本地调用分支development,您可以这样做:

git checkout -b development
git push -u github development

(您只需要-u一次即可在本地development分支与GitHub上的分支之间建立关联。)


更新:我上面提到的建议应该有效,但是VonC points out in his answer正确的做法是克隆现有的存储库,创建一个基于master的新分支,然后在该分支上提交新版本。这样你就有了一些共同的历史,这将(a)使git更容易合并,(b)更准确地表示项目的历史。