重定Git后的快进错误

重定Git后的快进错误,git,push,rebase,Git,Push,Rebase,我在两台不同的计算机上使用git存储库。 我必须在桌面上运行一些测试,所以我创建了分支X,然后我在主分支上做了一些工作,必须重新设置X的基础并挤压一些提交以创建补丁,然后我强制将更改推送到远程回购 后来,我将回购协议克隆到我的笔记本电脑上,并做了一些更改,但现在当我试图推动回购协议时,我抱怨说,我必须进行git拉动(这是我不想做的,因为我已经重新设置了基准并挤压/编辑了提交) 我只想在我的笔记本电脑上的原始存储库中克隆一个repo 因此,问题是:强制推送是我唯一的选择吗?如果您希望远程机器上的分

我在两台不同的计算机上使用git存储库。 我必须在桌面上运行一些测试,所以我创建了分支X,然后我在主分支上做了一些工作,必须重新设置X的基础并挤压一些提交以创建补丁,然后我强制将更改推送到远程回购

后来,我将回购协议克隆到我的笔记本电脑上,并做了一些更改,但现在当我试图推动回购协议时,我抱怨说,我必须进行git拉动(这是我不想做的,因为我已经重新设置了基准并挤压/编辑了提交) 我只想在我的笔记本电脑上的原始存储库中克隆一个repo


因此,问题是:强制推送是我唯一的选择吗?

如果您希望远程机器上的分支与笔记本电脑上的分支完全相同,并放弃存在的任何差异:
git push-f
正是这样做的。它将本地分支的状态推送到远程repo,并强制将远程分支设置到您刚才推的顶端。本地分支或其他地方未引用的远程分支所包含的任何提交都将无法访问。

这就是重写历史记录的结果。我不明白为什么人们如此喜欢git rebase,这对我来说似乎是一个糟糕的主意。嗯,如果你在跟踪一个协作项目,并且主分支经常更新,或者其他人的分支经常更新,那么你需要在他们最新的分支上重新调整你的工作,以确保你的工作正常进行,或者你可以将主分支与你的分支合并,以确保你的工作正常进行工作事实上,最终结果是一样的,只是历史随着
git-rebase
而改变,解决冲突可能更加困难,更不用说你目前遇到的那种麻烦了。到现在为止,您应该知道,决不应该将重定基础的分支推送到任何远程(因为这会弄乱每个人的历史记录)