一尘不染

如何正确强制 Git 推送?

git

我已经设置了一个远程非裸“主”存储库并将其克隆到我的计算机上。我做了一些本地更改,更新了我的本地存储库,并将更改推送回我的远程存储库。到那时为止一切都很好。

现在,我不得不更改远程仓库中的某些内容。然后我在本地仓库中更改了一些内容。我意识到不需要对远程仓库进行更改。所以我试图git push从我的本地仓库到我的远程仓库,但我得到了一个错误,比如:

为了防止您丢失历史记录,非快进更新被拒绝在再次推送之前合并远程更改。有关详细信息,请参阅“关于快进的说明”部分git push --help

我想这可能是一个

git push --force

将强制我的本地副本将更改推送到远程副本并使其相同。它确实强制更新,但是当我返回远程仓库并提交时,我注意到文件包含过时的更改(主远程仓库以前拥有的更改)。

一个答案的评论中提到的:

[我] 尝试强制,但是当返回主服务器以保存更改时,我得到了过时的暂存。因此,当我提交存储库时是不一样的。当我再次尝试使用 git push 时,我得到了同样的错误。

我该如何解决这个问题?


阅读 434

收藏
2022-02-22

共1个答案

一尘不染

做就是了:

git push origin <your_branch_name> --force

或者如果您有特定的回购:

git push https://git.... --force

这将删除您之前的提交并推送您当前的提交。

这可能不合适,但如果有人偶然发现这个页面,认为他们可能想要一个简单的解决方案......

Short flag

还要注意-f是 的缩写--force,所以

git push origin <your_branch_name> -f

也工作。

2022-02-22