push指的是将本地存储库的内容上传到远程存储库。推送(push)是一种将数据提交从本地仓库转移到远程仓库的行为。推送能够覆盖更改;推的时候要小心。
此外,我们可以说推送用本地引用更新了远程引用。每次您推送到存储库时,它都会使用您所做的一些有趣的更改进行更新。如果我们没有指定存储库的位置,那么它将推送到origin master的默认位置。
“git push”命令用于推送到存储库中。push命令可以被认为是在本地和远程存储库之间传输提交的工具。基本语法如下:
$ git push <option> [<Remote URL><branch name><refspec>...]
Push命令支持许多附加选项。push tags下的一些选项如下。
Git Push Tags
<repository>
: 存储库是推送操作的目的地。它可以是URL,也可以是远程存储库的名称。
<refspec>
: 它指定更新源对象的目标引用。
–all: “all”代表所有分支。它推动所有分支。
–prune: 它删除没有本地对应的远程分支。意思是,如果你有一个远程分支,比如demo,如果这个分支在本地不存在,那么它将被删除。
–mirror:它用于将存储库镜像到远程。更新或新创建的本地引用将被推送到远程端。它可以在远程端强制更新。被删除的引用将从远端删除。
–dry-run: 演练测试这些命令。除了最初更新存储库之外,它会执行所有这些操作。
–tags: 它会推送所有本地标签。
–delete: 删除指定的分支。
-u: 它创建了一个上游跟踪连接。如果你打算第一次推送该分支,这将非常有用。
Git Push Origin Master
Git push origin master是一个特殊的命令行工具,用于指定远程分支和目录。当您有多个分支和目录时,此命令可以帮助您确定主分支和存储库。
通常,术语origin **代表远程仓库,master被认为是主要的分支。因此,整个语句“git push origin master**”将本地内容推送到了远程位置的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被成功推送到原始master。我们可以在偏远的地方追踪它。我已经将这些更改推送到我的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
如何安全强制推送存储库
强制推送一个仓库有几个后果,比如它可能会取代你想保留的工作。如果远程端有意料之外的新提交,带有lease选项的强制推送会导致推送失败。如果我们说在git方面,那么我们可以说,如果远程包含未跟踪的提交,它会使其失败。它可以这样执行:
$git push <remote><branch> --force-with-lease
Git push -v/–verbose
-v代表啰嗦。它冗长地运行命令。推送存储库,并对对象进行详细说明。假设我们在本地仓库中添加了一个newfile2.txt文件并提交它。现在,当我们在远程端推送它时,它会给出比默认的git push更多的描述。push的语法如下:
语法:
$ git push -v
或者
$ git push --verbose
请看下面的输出:
如果我们将上述输出与默认的git选项进行比较,我们可以看到git verbose给出了描述性输出。
删除远程分支
我们可以使用git push删除远程分支。它允许从命令行中删除远程分支。要删除远程分支,执行以下命令:
语法:
$ git push origin -delete edited
输出:
在上面的输出中,git push origin命令使用了-delete选项来删除远程分支。我已经从仓库中删除了我的远程分支edited。请看下面的图片:
它是操作命令之前的远程存储库的活动分支列表。
上图显示了删除命令后的活动分支列表。在这里,你可以看到edited分支已经从仓库中删除了。