从我 fork 的仓库中 pull 时发生 Git 冲突,即使我做的最后一件事是从中 pull

标签 git git-rebase git-pull git-fork

上下文

很久以前我创建了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/

相关文章:

xcode - 安装 xcode 后的 git push.default 设置

git - 我可以为空的 Git 存储库创建工作树吗?

git - 从另一个分支上的选定提交创建一个 git 分支

c++ - 避免使用 git 和 make 重新编译

git - 无法 git pull ubuntu [无法创建符号链接(symbolic link)文件名太长]

Git Reset --hard 不要删除 git merge 错误

git - 在一系列 git 提交中提取对单个文件的更改

git - 什么会导致 "number of commits ahead"在 rebase 后发生变化?

git - 从 git 中清除多余的分支

git - 您的分支比 'origin/cherryPick' 领先 1 次提交。为什么?