git push 命令的用法

git push 命令的用法

使用 git push 命令可以将本地分支推送到远程仓库。

你可以给这个命令传递各种选项和参数。本文将介绍最常使用的选项和参数。

如何将本地 Git 分支推送到 Origin如果你运行简单的命令 git push,默认情况下,Git 将为你选择另外两个参数:要推送到哪个目标远程仓库,要推送的分支。

该命令的一般形式是这样的:

$ git push 默认情况下,Git 选择 origin 作为远程仓库,你的当前分支作为要推送的分支。

如果当前分支为 main,则 git push 命令将提供两个默认参数——有效运行 git push origin main。

在下面的示例中,origin 是一个 GitHub 仓库,而当前分支是 main:

(main)$ git remote -v

origin git@github.com:johnmosesman/burner-repo.git (fetch)

origin git@github.com:johnmosesman/burner-repo.git (push)

(main)$ git push

Enumerating objects: 4, done.

Counting objects: 100% (4/4), done.

Delta compression using up to 16 threads

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 274 bytes | 274.00 KiB/s, done.

Total 3 (delta 0), reused 0 (delta 0)

To github.com:johnmosesman/burner-repo.git

b7f661f..ab77dd6 main -> main

从输出中你可以看到,本地 main 分支被推送到远程 main 分支:

To github.com:johnmosesman/burner-repo.git

b7f661f..ab77dd6 main -> main

在 Git 中如何强制推送一个分支通常,你推送一个分支,并添加到其提交历史记录。

但是,有时你需要强行覆盖分支的历史记录。

你这么做的原因可能有几个。

第一个原因是要纠正一个错误——尽管最好做一个新的提交来还原更改。

第二种(也是更常见的情况)是在执行诸如 rebase 之类的操作之后——该操作会更改提交历史记录:

在内部,Git 通过创建新的提交并将它们应用于指定的基础来完成 [rebase]。重要的是要理解,即使分支看起来相同,它也由全新的提交组成的。rebase 将创建全新的提交。

这意味着,如果你尝试推送已在本地——而不是在远程——重新建立了基础的分支,则远程仓库将知道提交历史记录已更改,并且将阻止你推送,直到你解决差异为止:

(my-feature)$ git push

To github.com:johnmosesman/burner-repo.git

! [rejected] my-feature -> my-feature (non-fast-forward)

error: failed to push some refs to 'git@github.com:johnmosesman/burner-repo.git'

hint: Updates were rejected because the tip of your current branch is behind

hint: its remote counterpart. Integrate the remote changes (e.g.

hint: 'git pull ...') before pushing again.

hint: See the 'Note about fast-forwards' in 'git push --help' for details.

你可以在此处执行 git pull 来合并差异,但是如果你确实想覆盖远程仓库,则可以在推送时添加 --force 标记:

(my-feature)$ git push --force origin my-feature

Enumerating objects: 1, done.

Counting objects: 100% (1/1), done.

Writing objects: 100% (1/1), 184 bytes | 184.00 KiB/s, done.

Total 1 (delta 0), reused 0 (delta 0)

To github.com:johnmosesman/burner-repo.git

+ edb64e2...52f54da my-feature -> my-feature (forced update)

(注意:你可以使用缩写 -f 来表示 --force。)

强制推送是一种破坏性的操作——仅在确定需要执行这个操作时才使用它。

Force push with lease有时你可能想强制推送——但前提是没有其他人对该分支提交贡献。

如果其他人为这个分支提交了贡献,并将他们的更改推送到了远程服务器上,而你强制将其推到了远端,那么你将覆盖他们的更改。

为避免这种情况,可以使用 --force-with-lease 选项。

根据文档:

单独使用 --force-with-lease,不指定详细信息,将通过要求它们的当前值与为它们提供的远程跟踪分支相同,来保护所有将要更新的远程引用。这样就告诉 Git 仅当它与上次看到的相同时才强制更新该分支。

如果你正在与分支中的其他人进行协作,则最好避免使用 --force 或至少使用 --force-with-lease,来防止丢失其他协作者所做的更改。

如何在 Git 上推送到其他名称的分支通常,你会将本地分支推送到同名的远程分支——但并非总是如此。

要推送到其他名称的分支,只需指定要推送的分支和目标分支的名称,并用冒号(:)分隔。

例如,如果你想将名为 some-branch 的分支推送到 my-feature:

(some-branch)$ git push origin some-branch:my-feature

Total 0 (delta 0), reused 0 (delta 0)

To github.com:johnmosesman/burner-repo.git

+ 728f0df...8bf04ea some-branch -> my-feature如何推送所有本地分支到远程你不需要经常从本地推送所有分支,但是如果你需要这样做,则可以添加 --all 标记:

(main)$ git branch

* main

my-feature

(main)$ git push --all

...

To github.com:johnmosesman/burner-repo.git

b7f661f..6e36148 main -> main

* [new branch] my-feature -> my-feature

结语git push 命令是你经常会使用的命令,你可以将它和很多选项配合使用。我鼓励你阅读文档以了解这些有用的选项和快捷方式。

如果你喜欢本教程,我还将在 Twitter 上讨论类似的主题,并在我的网站上写这些主题。

原文:Git Push to Remote Branch – How to Push a Local Branch to Origin,作者:John Mosesman

相关推荐

魔兽争霸3冰封王座地图Mod安装指南
365bet亚洲网址

魔兽争霸3冰封王座地图Mod安装指南

⌛ 08-24 👁️ 5747
浴缸如何放水 浴缸如何放水出去
365bet提现多久到账

浴缸如何放水 浴缸如何放水出去

⌛ 10-26 👁️ 8430
懒人图库-设计素材、图片素材分享下载平台
365bet亚洲网址

懒人图库-设计素材、图片素材分享下载平台

⌛ 08-09 👁️ 1539