如果同事在推送后变基了,我该怎么办?

What do I do if a colleague has rebased after pushing?

我已经检查过 somebranch。一位同事做了一些工作并对其进行了重新设置,现在 origin/somebranchsomebranch 平行。我没有在分支上做任何工作,但我落后 14 次提交,提前 3 次提交并且两个文件存在合并冲突。我现在该怎么做才能不添加垃圾合并?

奖金问题:如果我在预覆盖分支上做了一些本地工作,我该怎么办?

编辑:

澄清我所做的事情。我做到了

git fetch
git checkout somebranch

一段时间后,我点击了 vscode 中的同步按钮,据我所知,它确实尝试了

git pull origin somebranch
git push origin somebranch

操作失败,已对两个文件启动合并。

历史现在看起来像(更长的版本):

* 8e1e0ed - (2 days ago) commit9 (origin/somebranch)
* c87977f - (9 days ago) commit8
* adfc49e - (3 weeks ago) commit2
* 7c8e72e - (3 weeks ago) commit1
* e158c80 - (8 days ago) commit7 (origin/master, master)
* 2357f78 - (8 days ago) commit6
| * 7b507a3 - (9 days ago) commit5 (HEAD -> somebranch)
| * 2a7af7b - (3 weeks ago) commit2
| * c424261 - (3 weeks ago) commit1
|/  
* 48098a0 - (3 weeks ago) commit0

commit1commit2 在我的 branch 和 origin 版本上是不同的。并且 commit5 被其他提交替换。我现在该怎么办?

保持提交 5

提交 1 和 2 已经存在,因此唯一要变基的提交是提交 5,而 HEAD 位于提交 5 的分支的末尾,因此不需要指定。

git rebase --onto origin/somebranch HEAD~

将使用提交 9 的父项创建新的提交 5。

不保留提交 5

如果您不想在您的分支上进行任何提交,那是一种更简单的情况。只是将本地分支重置为远程分支的情况。

git reset --hard origin/somebranch