繁体   English   中英

来自远程分支的 git 变基问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM