我尝试在推送到我的分支后创建一个新的拉取请求,因为我想将我的分支合并到主分支中。 GitHub 的回应是“这个分支有冲突需要解决”。但是,冲突如此复杂,我应该在本地解决。对此的建议是:
第 1 步: 克隆存储库或使用最新更改更新本地存储库。
git pull origin main
git checkout myBrach
git merge main
git push -u origin myBranch
但是在
git merge main
之后我收到以下错误:
error: Your local changes to the following files would be overwritten by merge:
... // Files listed
Merge with strategy ort failed.
我认为这个建议将帮助我更新 myBranch 并删除“main 后面的提交”。我不知道这个错误
Merge with strategy ort failed
意味着什么以及如何在不丢失代码的情况下解决这个问题。
merge main
步骤不是推荐的最佳实践。
您可能会考虑在合并之上重新调整分支,然后强制推送您的分支(这将更新 PR)
通过在主分支之上重新提交分支提交,您将在本地解决冲突。
git switch main
git pull origin main
git switch myBranch
git rebase main
# resolve any local conflict
git push --force
通过变基,冲突一次只处理一个提交。这使您可以了解每个冲突的上下文,因为您正在有效地重写历史记录,使分支的更改看起来像是直接在主分支的最新版本上进行的。
它避免了历史记录中不必要的合并提交。通过一一重新应用提交,您可以维护干净的线性历史记录。
并且,关于 PR,变基可确保您的更改与最新版本兼容,并提供干净的历史记录,而无需合并提交。
由于 GitHub PR 会在每个
git push --force
上自动更新,因此该方法是推荐的工作流程。