[英]Problem with git rebase from remote branch
我正在处理一个包含数百万行代码的大型项目,有一天我将提交推送到my_branch
。 后来我通过 Web UI(准确地说是 GitLab UI)进行了额外的更改并推送了提交。 现在我想将更改从my_branch
我的本地环境中。
如果我运行git pull --rebase origin my_branch
,它会给我很多 rebase 冲突并导致我从未接触过的文件。 我不知道如何合并它们,从而解决所有的冲突......我确信没有其他人在那里推动任何东西。
如何克服这种情况? 我在这里做错了什么?
提前致谢!
一种可能的解决方案(也是一种更安全的解决方案)是重命名您的本地分支(并取消设置其上游),然后获取远程分支,然后在本地将一个分支合并到另一个分支中。
好吧,您应该保存当前分支的内容:
git checkout my_branch
git checkout -b by_branch_saved
然后返回 my_branch 并进行硬重置:
git checkout my_branch
git reset --hard my_branch <latest_stable_version_without_your_changes>
毕竟,您可以毫无问题地执行变基。
git checkout trunk
git branch -D my_branch
git pull
git checkout my_branch
重新创建帮助了我:我刚刚删除了我的本地分支并再次从主干中提取了更改。 然后我切换到my_branch
。
就这样。 谢谢大家!
您在没有接触过但其他人接触过的文件中遇到了冲突。 变基将您的本地提交重新合并到远程分支。 您合并的任何更改都必须再次合并。 如果您在本地有许多提交,并且您不推送它们,它们会随着时间的推移而累积。 变基变得越来越难。
当您有更长的运行任务时,请从my_branch
创建一个新分支。 做正常的合并而不是变基。 这可以防止您不得不一遍又一遍地重新合并相同的更改。 当需要将您的个人分支合并回my_branch
时,请使用 squash-merge 来保持提交历史记录干净:
git checkout my_branch
git pull
git checkout -b your_branch
git commit
git commit
git fetch
git merge origin/my_branch
git commit
git checkout my_branch
git pull
git merge --squash your_branch
git push origin HEAD
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.