如何将本地存储库上的其他文件添加到现有的远程存储库

时间:2019-05-18 09:29:26

标签: git github

因此,我已经添加了一个新的远程服务器,并在几天前将文件从本地存储库推送到远程存储库。现在,我想将另一个文件从另一个新的本地存储库推送到远程存储库。我该怎么办?

为新文件初始化新的本地存储库后,该文件已在本地提交。然后,我添加了一个远程服务器,并尝试将本地存储库中的文件推送到远程存储库,但被拒绝。

git remote add origin https://github.com/username/repo_name.git
git push -u origin master


error: failed to push some refs to 
'https://github.com/username/repo_name'
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/username/repo_name
 * branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

1 个答案:

答案 0 :(得分:1)

git init foo
cd foo
git remote add origin https://github.com/username/repo_name.git

在推送之前,您可能已经运行了以下命令来初始化新的本地存储库。然后,您可能已经采用了以下命令来完成这项工作:

# fetch and checkout the master from "origin" and then add the new file
git fetch origin master
git checkout -b master FETCH_HEAD
touch bar.txt
git add .
git commit
git push -u origin master

但是您首先提交了文件,并创建了本地master,这使推送和拉取失败。要解决此问题,

git pull origin -r master
git push -u origin master

如果没有-r,则本地master和远程master不能合并,因为它们实际上是两个不相关的分支。他们没有任何共同的承诺。使用-r--rebase,它们将以重新设置的方式合并为线性历史记录。

还有另一种方法,不如上面的方法

git fetch origin master
git merge FETCH_HEAD --allow-unrelated-histories
git push -u origin master

第二个解决方案创建了一个丑陋的历史记录,其中包含两个根提交。

相关问题