git - Git rebase,修复冲突,然后推送被拒绝
问题描述
当我rebase并且存在我解决的冲突时,我收到以下消息:
提示:更新被拒绝,因为您当前分支的尖端落后
我们有2个分支:
master
是我们的基地feature/fix-input-height
(合并到主人的新功能)
我正在准备feature/fix-input-height
通过 rebase master 在本地解决冲突
git checkout master
git pull origin master
git checkout feature/fix-input-height
git pull origin feature/fix-input-height
git rebase master
- 出现冲突
- 我解决它们
- 然后尝试推送新的功能分支
git push origin feature/fix-input-height
并再次收到被拒绝的错误消息:
提示:更新被拒绝,因为您当前分支的尖端落后
stackoverflow 上的每个人都建议:
git push origin -f feature/fix-input-height
但是强迫推动只是感觉不对
解决方案
Rebase 通过复制提交来工作。你开始,例如:
...--o--o--o <-- master
\
A--B--C <-- feature/fix-input-height (HEAD)
最后得到:
A'-B'-C' <-- feature/fix-input-height
/
...--o--o--o <-- master
\
A--B--C [previous feature/fix-input-height, now abandoned]
但是另一个存储库——不是你的,你要求你的 Git 去的那个git push
——仍然有原始提交。你不再有那些提交了。你有新的和改进的,但他们不知道。 他们只知道你要求他们丢弃三个非常好的提交。
所以他们说不,我不会扔掉那些。至少,除非您使用有力的命令,而不是礼貌的请求,否则不会。
这就是为什么你需要--force
,或者——更好,尽管人们不经常使用它——<code>--force-with-lease。不管怎样,你告诉他们:是的,我的意思是你应该扔掉你的提交。 这两者之间的区别--force
只是说:扔掉你的提交!改用这个! 使用--force-with-lease
说:我认为你的feature/fix-input-height
名字提交C
。如果是这样:扔掉那些提交!改用这个! 如果有人添加了 commit D
,它会失败,而你没有,因此没有包含在你的 rebase 中。
推荐阅读
- r - MatchIt 与多个单元
- jquery - 如何跳出Jquery进行迭代
- vb.net - 如何在 Visual Studio (VB) 中仅将 Word 段落的一部分加粗
- html - 行数据的 Html 表格设计问题
- mule - 如何处理 http 连接器响应代码
- javascript - React Semantic UI:Table.Header Cell 未占用全宽
- tensorflow - 将 InMemoryEvaluatorHook 与 TPU 一起使用会引发异常
- azure - Azure JWT 令牌密钥轮换
- android - 当视图变大时,我如何正确地在constraintLayout(android)中使用相邻的2条链而不覆盖链?
- javascript - D3.js:在没有 d3.drag 的情况下获得平移平移而无需缩放