首页 > 解决方案 > 如何将本地存储库上的附加文件添加到现有的远程存储库

问题描述

所以几天前我已经添加了一个新的遥控器并将文件从本地存储库推送到远程存储库。现在,我想将另一个文件从另一个新的本地存储库推送到远程存储库。我怎么做?

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

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

标签: gitgithub

解决方案


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

但是您首先提交了文件并创建了一个 local master,但推送和拉取失败。要解决问题,

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

没有-r,本地master和远程master无法合并,因为它们实际上是两个不相关的分支。他们没有任何共同的承诺。使用-ror --rebase,它们以变基方式合并为线性历史。

还有一种方法,不如上面那个

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

第二种解决方案创建了一个丑陋的历史,它有两个根提交。


推荐阅读