上下文
很久以前我创建了https://github.com/nicolas-raoul/Anki-Android (“repo1”)。
有人将其 fork 到 https://github.com/ankidroid/Anki-Android (“repo2”)现在是我们大家协作的地方。
我想做什么
我想更新 repo1 以获取 repo2 的最新源代码(以便我可以创建功能分支并发送 pull 请求)。
我尝试了什么
在我的本地克隆的repo1中,我运行了 git pull <repo2> master
但我遇到了巨大的冲突。
我发现这非常令人惊讶,因为 last thing I did是完全相同的命令。即使自从上次从 repo2 pull 以来我没有修改过 repo1,怎么可能会发生冲突呢? (我刚刚删除了我的本地存储库并从 repo1 重新克隆,因此您可以确定这不是我的本地存储库的问题)
我想我不能使用rebase
因为 repo2 最初是从我的存储库 repo1 fork 出来的。
最佳答案
最简单的解决方案就是将当前的 repo1
master
分支替换为 repo2
中的分支。
cd repo1
git add remote repo2 /url/repo2
git fetch repo2
git checkout master
git reset --hard repo2/master
git push -f
如果您是唯一在 repo1
上工作的人,则强制为其添加新的历史记录不会影响其他任何人。
即使有人克隆了 repo1,现在在 repo2 进行协作,所以这也没关系。
但如果您想格外小心,您可以:
- 基于
repo2/master
创建一个新分支 - 将新分支推送到
repo1
- 从
repo1
上的新分支完成的分支发出 pull 请求(到repo2
)
在最后一种情况下,没有强制 push ,就没有伤害。
关于从我 fork 的仓库中 pull 时发生 Git 冲突,即使我做的最后一件事是从中 pull ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22978224/