Push一词是指将本地版本库的内容上传到远程版本库。Push是一种从本地版本库向远程版本库传输提交的行为。Push能够覆盖修改,Push时要注意.
此外,我们可以说推送是用本地 refs 更新远程 refs。每次你推送到版本库中,它都会被你做的一些有趣的改动所更新。如果我们不指定版本库的位置,那么它就会推送到默认的origin master的位置.
“git push “命令用来推送到仓库。推送命令可以被认为是在本地和远程仓库之间传输提交的工具。基本语法如下
$ git push <option> [<Remote URL><branch name><refspec>...]
推送命令支持许多额外的选项。推送标签下的一些选项如下.
Git Push 标签
<repository>
: 仓库是推送操作的目的地。它可以是一个URL,也可以是一个远程仓库的名称.
<refspec>
: 它指定了更新源对象的目标ref.
–all: “all”这个词代表所有分支。它推动了所有分支.
–prune: 它将删除本地没有对应的远程分支。这意味着,如果你有一个远程分支,例如demo,如果这个分支在本地不存在,那么它将被删除.
–mirror: 它是用来将版本库镜像到远程的。更新或新建的本地版本将被推送到远程端。它可以在远程端强制更新。被删除的 refs 将被从远程端删除.
–dry-run: 干运行测试命令。它所做的这一切,除了最初的更新版本库之外.
–tags: 它push了所有的本地标签.
–delete: 它删除了指定的分支.
-u: 它创建了一个上游跟踪连接。如果你打算第一次推送分支,它是非常有用的.
Git Push Origin Master
Git push origin master 是一个特殊的命令行工具,用于指定远程分支和目录。当你有多个分支和目录时,那么这个命令可以协助你确定你的主分支和仓库.
一般来说,术语origin stands的远程仓库,master被认为是主分支。因此,整个语句 ” git push origin master ” 将本地内容推送到远程的主分支上.
语法:
$ git push origin master
让我们通过一个例子来理解这个说法。
让我们对我现有的版本库做一个新的提交,比如GitExample2。我在本地版本库中添加了一张名为abc.jpg的图片,并提交了修改。考虑一下下面的图片:
在上面的输出中,我为我的本地仓库附上了一张图片。git status 命令是用来检查仓库的状态的。git status 命令的执行过程如下:
$ git status
它显示了未被追踪的图片abc.jpg的状态。现在,添加图片并提交修改为:
$ git add abc.jpg
$git commit -m "added a new image to project."
镜像在本地版本库中被完全跟踪。现在,我们可以把它推送到origin master,作为:
$ git push origin master
输出:
文件abc.jpg已成功推送到原点主机。我们可以在远程位置跟踪它。我已经把这些修改推送到我的GitHub账户。我可以在我的仓库中跟踪它。请看下面的图片:
在上面的输出中,推送的文件abc.jpg被上传到我的GitHub账户的主分支仓库中.
Git 强制Push
git force push 允许你将本地仓库推送到远程,而不需要处理冲突。它的使用方法如下:
$ git push <remote><branch> -f
或
$ git push <remote><branch> -force
-f
版本是 force 的简写。远程可以是任何远程位置,如GitHub、Subversion或任何其他git服务,而分支是一个特定的分支名称。例如,我们可以使用git push origin master -f
.
我们也可以省略这个命令中的分支。该命令将被执行为:
$git push <remote> -f
我们可以同时省略远程和分支。当远程和分支都被省略时,默认行为由git config的push.default设置决定。该命令将被执行为:
$ git push -f
如何安全地强制推送仓库:
强制推送版本库有几个后果,比如它可能会取代你想保留的工作。如果远端有你没有想到的新提交,使用租赁选项的强制推送就会导致推送失败。如果我们用git来说,那么我们可以说如果远程有未跟踪的提交,它就会失败。它的执行方式是:
$git push <remote><branch> --force-with-lease
Git push -v/–verbose
-v
代表的是verbosely。它运行命令的时候很粗略。它推送了版本库并给出了关于对象的详细解释。假设我们在本地版本库中添加了一个newfile2.txt,并提交了它。现在,当我们把它推送到远程时,它将比默认的git推送给出更多的描述。push verbosely 的语法如下:
语法:
$ git push -v
或
$ git push --verbose
考虑下面的输出:
如果我们将上述输出与默认的git选项相比较,我们可以看到git verbose给出了描述性的输出.
删除远程分支
我们可以用git push删除一个远程分支。它允许从命令行中删除一个远程分支。要删除一个远程分支,请执行以下命令:
语法:
$ git push origin -delete edited
输出:
在上面的输出中,git push origin 命令使用了 -delete 选项来删除一个远程分支。我已经从仓库中删除了我的远程分支 edited。请看下面的图片:
它是我的远程版本库的活动分支列表,在操作命令之前.
上面的图片显示了删除命令后的活动分支列表。在这里,你可以看到 edited 分支已经从版本库中删除.