因此,我已经添加了一个新的远程服务器,并在几天前将文件从本地存储库推送到远程存储库。现在,我想将另一个文件从另一个新的本地存储库推送到远程存储库。我该怎么办?
为新文件初始化新的本地存储库后,该文件已在本地提交。然后,我添加了一个远程服务器,并尝试将本地存储库中的文件推送到远程存储库,但被拒绝。
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
答案 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
第二个解决方案创建了一个丑陋的历史记录,其中包含两个根提交。