Git:远程分支----git pull和git push命令用法介绍


本篇博客涉及本地分支和远程分支的追踪关系,关于追踪关系的建立可参考我的另一篇博客: https://blog.csdn.net/qq_42780289/article/details/97762596

一、git pull

1.1 git pull命令的完整格式

$ git pull <远程主机名> <远程分支名>:<本地分支名>

作用是取回远程主机的指定分支,再与本地的指定分支合并。

1.2 省略本地分支名

$ git pull <远程主机名> <分支名>

当只有一个分支名时,这个分支名默认是远程分支名。作用是取回远程主机的指定分支,再与本地的当前分支合并。

例如:$ git pull origin dev ,假设本地的当前分支是master。

结果:取回远程主机 origin 的 dev 分支与本地的当前分支,即与 master 分支合并。

1.3 当前分支与远程分支存在追踪关系(可能有多个追踪关系)

$ git pull <远程主机名>

取回远程主机与当前分支有追踪关系的分支,再与本地的当前分支合并。如果没有追踪关系使用该命令则会报错。

1.4 当前分支只有一个追踪关系

$ git pull

取回远程与当前分支有唯一追踪关系的分支,再与本地的当前分支合并。如果没有追踪关系使用该命令则会报错。

1.5 拉取远程主机上被他人rebase操作然后强制推送的分支

$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

有人推送了经过rebase操作的提交,并丢弃了你的本地开发所基于的一些提交,但是你push之后,那些被对方丢弃的提交又出现了,这是对方所不希望看到的。所以在拉取合并时加上 --rebase 选项,git内部会自动检测,合并的结果会丢弃一些提交,符合预期。

1.6 在本地删除远程主机上已删除的对应分支

$ git pull -p

如果在远程主机删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支。如果要删除,加上 -p 选项即可。


二、git push

2.1 git push命令的完整格式:

$ git push <远程主机名> <本地分支名>:<远程分支名>

作用是将本地的指定分支推送到远程主机的指定分支上。

注意:git pull是<远程分支名>:<本地分支名>,而git push是<本地分支名>:<远程分支名>。

2.2 省略远程分支名

$ git push <远程主机名> <分支名>

当只有一个分支名时,这个分支名默认是本地分支名。作用是将本地的指定分支推送到远程主机的同名分支上。注意如果远程主机不存在该同名分支,则会自动新建同名分支。

例如:$ git push origin dev ,假设本地的当前分支是master。

结果:将本地的 dev 分支推送到远程主机 origin 的 dev 分支上,和本地的当前分支是 master 没有关系。

2.3 省略本地分支名

$ git push <远程主机名> :<远程分支名>

如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支

在Git v1.7.0 之后,还可以使用下面这种语法删除远程分支:

$ git push <远程主机名> --delete <远程分支名>

2.4 当前分支与远程分支存在追踪关系(可能有多个追踪关系)

$ git push <远程主机名>

作用是将本地的当前分支推送到远程主机有追踪关系的对应分支上。如果没有追踪关系使用该命令则会报错。

2.5 当前分支与远程分支只有一个追踪关系

$ git push

作用是将本地的当前分支推送到远程有唯一追踪关系的对应分支上。如果没有追踪关系使用该命令则会报错。

2.6 建立追踪关系并指定默认远程主机

$ git push -u <远程主机名> <本地分支名>

作用是将本地的指定分支推送到远程主机的同名分支。另外因为加了-u参数,所以如果没有追踪关系则会建立,另外如果当前指定分支与多个远程主机存在追踪关系,则指定该远程主机为默认主机,后面就可以不加参数使用git push。

2.7 推送所有分支

$ git push --all <远程主机名>

不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用–all选项。如果远程主机的版本比本地版本更加新,推送时Git会报错,要求先在本地做git pull合并差异或解决冲突,然后再推送到远程主机。但是如果你一定要推送,可以使用下面的–force选项。

2.8 用本地所有分支覆盖远程所有分支

$ git push --force <远程主机名>

使用–force选项,结果导致远程主机上的版本直接被覆盖。除非你很确定要这样做,否则应该尽量避免使用–force选项。

2.9 附(对标签tag的推送)

推送一个本地标签到远程:

$ git push <远程主机名> <本地标签名>

推送本地全部未推送过的标签到远程:

$ git push <远程主机名> --tags

删除一个远程标签(即推送一个空的标签到远程标签):

$ git push <远程主机名> :refs/tags/<远程标签名>

在Git v1.7.0 之后,还可以使用下面这种语法删除远程标签:

$ git push <远程主机名> --delete tag <远程标签名>


参考文章:

http://www.ruanyifeng.com/blog/2014/06/git_remote.html

https://blog.zengrong.net/post/1746.html

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值