你想强制推送
您基本上想要做的是强制推送您的本地分支,以覆盖远程分支。
如果您想更详细地了解以下每个命令,请参阅下面的详细信息部分。使用 Git 强制推送基本上有 4 种不同的选项:
git push <remote> <branch> -f
git push origin master -f # Example
git push <remote> -f
git push origin -f # Example
git push -f
git push <remote> <branch> --force-with-lease
如果您想对每个命令进行更详细的说明,请参阅下面我的长答案部分。
警告:强制推送将用您正在推送的分支的状态覆盖远程分支。在使用它之前确保这是你真正想要做的,否则你可能会覆盖你真正想要保留的提交。
强制推送详情
指定远程和分支
您可以完全指定特定的分支和远程。 -f 标志是 --force 的短版本
git push <remote> <branch> --force
git push <remote> <branch> -f
省略分支
当分支到推送分支被省略时,Git 会根据你的配置设置来计算它。在 2.0 之后的 Git 版本中,新的 repo 将具有默认设置来推送当前签出的分支:
git push <remote> --force
在 2.0 之前,新的 repos 将具有默认设置来推送多个本地分支。有问题的设置是remote.<remote>.push 和push.default 设置(见下文)。
省略远程和分支
当远程和分支都被省略时,git push --force 的行为由您的 push.default Git 配置设置决定:
git push --force
您可以通过阅读git help config 或an online version of the git-config(1) Manual Page 了解更多push.default 设置。
使用--force-with-lease 强制推送更安全
使用“租约”强制推送允许强制推送失败,如果遥控器上有您没有预料到的新提交(从技术上讲,如果您还没有将它们提取到远程跟踪分支中),这如果您不想意外覆盖您甚至还不知道的其他人的提交,而您只想覆盖自己的提交,这很有用:
git push <remote> <branch> --force-with-lease
您可以通过阅读以下任何内容了解有关如何使用--force-with-lease 的更多详细信息: