GIT:如何将第二个本地存储库与现有的GitHub存储库连接?

时间:2018-03-19 22:02:02

标签: git github

我正在学习处理GIT存储库。 我在GitHub上有一个存储库,我在本地克隆了它。我修改了一些文件,然后添加-A,commit -m和git push origin master。到目前为止一切都很好。

现在,我已经使用Git GUI创建了另一个本地存储库,我已经放置了site-web(django 2.0)的文件,并在之后再次添加,提交:

$ git remote add origin https://github.com/Frank-Mascarell/LibrosWeb.git
$ git remote -v
origin  https://github.com/Frank-Mascarell/LibrosWeb.git (fetch)
origin  https://github.com/Frank-Mascarell/LibrosWeb.git (push)
$ git status
On branch master
nothing to commit, working tree clean
$ git fetch origin


$ git push origin master
To https://github.com/Frank-Mascarell/LibrosWeb.git
! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'https://github.com/Frank-
Mascarell/LibrosWeb.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

我也尝试过:

$ git pull origin master
From https://github.com/Frank-Mascarell/LibrosWeb
* branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

你为什么要犯这些错误? 似乎这两个存储库连接不良,我无法上传或下载。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您已经从头开始创建了一个新的存储库,并且已经添加了一个远程存储库。

在第一种情况下,您尝试将更改推送到与您的分支不共享相同历史记录的分支。

在第二种方案中,您尝试将更改从远程分支合并到分支中。这会失败,因为这两个分支不共享任何共同的历史记录。

如果您重新开始而不是初始化新存储库,请确保克隆原始存储库并从那里开始。这将允许您推送新的更改,并在现有提交的基础上合并或变基。

答案 1 :(得分:0)

错误消息提供了有关问题的线索。这两个存储库有着无关的历史。

在git中,您不仅仅处理文件和文件更改,尽管这是您从中获得的。 git中的每个提交都包含对每个提交的引用,为您提供完整和完整的历史记录。

发生了什么事情,你有三个存储库,两个是链接的,一个是全新的,但给出了相同的文件。

因此,您的存储库在github上启动,然后在本地克隆,您可以来回推送,不仅可以镜像数据,还可以镜像整个提交历史记录。他们从头到尾都有完整的项目参考。

新存储库只有项目最新状态的快照,没有任何历史记录。

可以修改新的本地存储库,使其进入可以再次推送到现有分支的状态,但这可能比必要的更复杂。

最简单的方法就是从github或第一个本地存储库再次克隆新的存储库。

但是,如果您已经对第二个本地存储库进行了更改,则需要将这些更改复制到一个克隆的存储库中,进行新的提交并从那里进行推送。