Git push 推送到远程仓库

git push命令用于将本地仓库内容上传到远程仓库。推送是将提交从本地仓库传输到远程仓库的方式。它与git fetch相对应,fetch是从远程分支导入提交到本地分支,而 push 是提交本地分支的更改给远程分支。使用git remote命令配置远程分支。推送可能会覆盖更改,所以推送时应谨慎。下面将讨论这些问题。

git push 用法

git push <remote> <branch>

将指定的分支以及所有必要的提交和内部对象推送到远程仓库的分支 。 这会在目标仓库中创建一个本地分支。 为了防止你覆盖提交,当发现推送的分支的提交不是最新的提交,也就是慢于远程分支的提交时,Git 不会让你推送。

git push <remote> --force

该命令上面的命令相同,但是它是强制推送,即使当前要推送的分支的提交慢于远程仓库的提交版本。除非你绝对确定自己知道自己在做什么,否则不要使用 --force 选项。

git push <remote> --all

将所有的本地分支推送到远程。

git push <remote> --tags

当推送分支或者使用 --all 选项时,Git 并不会对本地的标签(tag)进行推送。如果要将本地的标签推送的远程仓库,则需要--tags 选项。


git push 讨论

git push最常用于将提交的本地更改发布到中央仓库。修改本地仓库后,将执行 git push 以与远程团队成员共享修改。

Git push 前后分支对比
Git push 前后分支对比

上图显示了当本地 master 分支超过了中央仓库的 master 分支并且通过运行git push origin master 发布更改时会发生的情况。请注意,git push 与从远程仓库中运行git merge master基本相同。


git push 和 同步

git push 是整个 Git“同步”过程中使用的频率高的组件之一。 同步命令在使用 git remote 命令配置的远程分支上运行。 git push 可以被认为是“上传”命令,而 git fetchgit pull 可以被认为是“下载”命令。 一旦通过下载或上传移动变更集,那么我们就可以在目标仓库执行 git merge 来合并变更。


git push 推送到裸仓库

一个现在经常使用Git 场景是让远程托管的 --bare 存储库充当中央原始仓库。 此源仓库通常由受信任的第三方(如 github)托管在异地。 由于推送与远程分支结构混乱,推送到使用 --bare 选项创建的仓库是最安全和最常见的。 裸仓库没有工作目录,因此推送不会改变任何正在进行的工作目录内容。 有关创建裸仓库的更多信息,请阅读 git init


删除远程分支或标签

有时候,为了便于记录或者为了使仓库更简洁,我们必须删除一些分支。如果要完全删除分支,则必须在本地和远程删除该分支。

$ git branch -D new_branch_jiyik
$ git push origin :new_branch_jiyik

以上将删除名为 new_branch_jiyik 的远程分支,将带有冒号前缀的分支名称传递给 git push 将删除远程分支。

查看笔记