Git拒绝合并无关的历史
在git rebase origin/development
以下错误消息显示从git:
fatal: refusing to merge unrelated histories Error redoing merge 1234deadbeef1234deadbeef
我的git版本是2.9.0。 用于在以前的版本中正常工作。
我怎么能继续这个rebase允许与新版本中引入强制标志无关的历史?
从git 2.9开始,默认的行为已经改变了:
“git merge”用于合并两个分支,这两个分支默认没有共同的基础,这就导致了一个新创build的现有项目的历史,然后被一个不知情的维护者拉下来,从而允许将不必要的并行历史合并到现有项目中。 该命令被教导不允许这个默认情况下 ,与逃生孵化
--allow-unrelated-histories
允许--allow-unrelated-histories
选项被用于一个罕见的事件,合并两个项目,独立开始他们的生活的历史。
有关更多信息,请参阅git发行版更改日志 。
您可以使用--allow-unrelated-histories
来强制合并发生。
在我的情况下,错误只是fatal: refusing to merge unrelated histories
在远程添加一个git repo后, fatal: refusing to merge unrelated histories
在每个特别的第一个请求中fatal: refusing to merge unrelated histories
。
使用--allow-unrelated-histories
标志以这种方式使用pull请求:
git pull origin branchname --allow-unrelated-histories
我第一次设置本地存储库时出现此错误。 然后去github并创build一个新的存储库。 然后我跑了
git remote add origin <repository url>
当我试图推/拉,我得到了同样的fatal: unrelated_histories
错误。 这是我如何解决它:
git pull origin master --allow-unrelated-histories git merge origin origin/master ... add and commit here... git push origin master
试试git pull --rebase development
如果您尝试在github上将一些代码推送到您的远程存储库,那么当您拉动远程存储库时,会发生您遇到的情况。
这只是因为megering您的本地存储库和远程存储库默认情况下是不允许的。
你可以试着写git pull origin master --allow-unrelated-histories
来解决这个问题。希望能帮到你!
我也为此付出了努力,但设法find了解决办法。
当你遇到上面的错误只是樱桃挑选合并提交,然后继续rebase:
git cherry-pick -m 1 1234deadbeef1234deadbeef git rebase --continue
有一件事我想在这里添加,当我得到同样的错误时,我试图将旧的回购的提交推到新创build的回购。 我解决了它。 如果新的回购有任何文件名称与旧的,那么你会得到我的错误。 我在这两个README.md
中都有一个名为README.md
文件。 这是我在运行git pull --rebase development
时遇到的错误
. . . Using index info to reconstruct a base tree... Falling back to patching base and 3-way merge... Auto-merging README.md CONFLICT (add/add): Merge conflict in README.md error: Failed to merge in the changes. Patch failed at 0020 added readme The copy of the patch that failed is found in: .git/rebase-apply/patch When you have resolved this problem, run "git rebase --continue". If you prefer to skip this patch, run "git rebase --skip" instead. To check out the original branch and stop rebasing, run "git rebase --abort".
在完成了合并冲突并做出改变之后,当我运行这个git rebase --continue
,我得到:
Applying: added readme No changes - did you forget to use 'git add'? If there is nothing left to stage, chances are that something else already introduced the same changes; you might want to skip this patch. When you have resolved this problem, run "git rebase --continue". If you prefer to skip this patch, run "git rebase --skip" instead. To check out the original branch and stop rebasing, run "git rebase --abort".
然后我运行git rebase --skip
向前移动,再次遇到README.md
合并冲突的README.md
。 对于每次我承诺的README.md
我得到这个错误,每次我不得不手动删除冲突,提交更改,然后运行, git rebase --continue
和git rebase --skip
。 因为,在我的情况下, README.md
没有那么多的更新,我解决了这个问题。 一个快速的workaroud本来是要重新命名所有的新回购的名称文件到别的东西,然后运行git pull --rebase development
。