在使用 git push 命令推送代码到服务器时,不同的需求会有不同的用法。具体说明一些使用实例如下。

强制覆盖服务器的git log信息

当我们使用 git reset 命令回退本地 git log 显示的 commit 信息后,使用 git push 提交改动到远端服务器会报错,打印类似下面的错误信息:

提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。

此时,如果想强制用本地 git log 的 commit 信息覆盖服务器的 git log,可以使用 git push -f 命令来推送代码到服务器。查看 man git-push 对 -f 选项说明如下:

-f, --force
Usually, the command refuses to update a remote ref that is not an ancestor of the local ref used to overwrite it.
This flag disables these checks, and can cause the remote repository to lose commits; use it with care.

即,-f 选项可以用本地的 git log 信息强制覆盖服务器的 git log 信息。由于这会导致部分提交log信息丢失,请小心使用,确认这样做的必要性。

删除远端服务器分支

在 git 中,可以使用下面两个命令来删除远端服务器上的分支。

  • git push origin :<branchName>

git push origin :<branchName> 命令中,冒号 ":" 前面的参数是要推送的本地分支名,这里没有提供,相当于推送一个本地空分支。冒号 ":" 后面的参数是要推送到服务器的远端分支名。

这个命令推送一个空分支到远端分支,相当于远端分支被置为空,从而删除 branchName 指定的远端分支。

  • git push origin --delete <branchName>

git push origin --delete <branchName> 命令本质上跟 git push origin :<branchName> 是一样的。查看 man git-push 对 --delete 选项说明如下:

-d --delete
All listed refs are deleted from the remote repository. This is the same as prefixing all refs with a colon.

即,--delete 选项相当于推送本地空分支到远端分支。


霜鱼片
446 声望331 粉丝

解读权威文档,编写易懂文章。如有恰好解答您的疑问,多谢赞赏支持~