赞
踩
本篇博客涉及本地分支和远程分支的追踪关系,关于追踪关系的建立可参考我的另一篇博客: https://blog.csdn.net/qq_42780289/article/details/97762596
$ git pull <远程主机名> <远程分支名>:<本地分支名>
作用是取回远程主机的指定分支,再与本地的指定分支合并。
$ git pull <远程主机名> <分支名>
当只有一个分支名时,这个分支名默认是远程分支名。作用是取回远程主机的指定分支,再与本地的当前分支合并。
例如:$ git pull origin dev ,假设本地的当前分支是master。
结果:取回远程主机 origin 的 dev 分支与本地的当前分支,即与 master 分支合并。
$ git pull <远程主机名>
取回远程主机与当前分支有追踪关系的分支,再与本地的当前分支合并。如果没有追踪关系使用该命令则会报错。
$ git pull
取回远程与当前分支有唯一追踪关系的分支,再与本地的当前分支合并。如果没有追踪关系使用该命令则会报错。
$ git pull --rebase <远程主机名> <远程分支名>:<本地分支名>
有人推送了经过rebase操作的提交,并丢弃了你的本地开发所基于的一些提交,但是你push之后,那些被对方丢弃的提交又出现了,这是对方所不希望看到的。所以在拉取合并时加上 --rebase 选项,git内部会自动检测,合并的结果会丢弃一些提交,符合预期。
$ git pull -p
如果在远程主机删除了某个分支,默认情况下,git pull 不会在拉取远程分支的时候,删除对应的本地分支。如果要删除,加上 -p 选项即可。
$ git push <远程主机名> <本地分支名>:<远程分支名>
作用是将本地的指定分支推送到远程主机的指定分支上。
注意:git pull是<远程分支名>:<本地分支名>,而git push是<本地分支名>:<远程分支名>。
$ git push <远程主机名> <分支名>
当只有一个分支名时,这个分支名默认是本地分支名。作用是将本地的指定分支推送到远程主机的同名分支上。注意如果远程主机不存在该同名分支,则会自动新建同名分支。
例如:$ git push origin dev ,假设本地的当前分支是master。
结果:将本地的 dev 分支推送到远程主机 origin 的 dev 分支上,和本地的当前分支是 master 没有关系。
$ git push <远程主机名> :<远程分支名>
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支
在Git v1.7.0 之后,还可以使用下面这种语法删除远程分支:
$ git push <远程主机名> --delete <远程分支名>
$ git push <远程主机名>
作用是将本地的当前分支推送到远程主机有追踪关系的对应分支上。如果没有追踪关系使用该命令则会报错。
$ git push
作用是将本地的当前分支推送到远程有唯一追踪关系的对应分支上。如果没有追踪关系使用该命令则会报错。
$ git push -u <远程主机名> <本地分支名>
作用是将本地的指定分支推送到远程主机的同名分支。另外因为加了-u参数,所以如果没有追踪关系则会建立,另外如果当前指定分支与多个远程主机存在追踪关系,则指定该远程主机为默认主机,后面就可以不加参数使用git push。
$ git push --all <远程主机名>
不管是否存在对应的远程分支,将本地的所有分支都推送到远程主机,这时需要使用–all选项。如果远程主机的版本比本地版本更加新,推送时Git会报错,要求先在本地做git pull合并差异或解决冲突,然后再推送到远程主机。但是如果你一定要推送,可以使用下面的–force选项。
$ git push --force <远程主机名>
使用–force选项,结果导致远程主机上的版本直接被覆盖。除非你很确定要这样做,否则应该尽量避免使用–force选项。
推送一个本地标签到远程:
$ git push <远程主机名> <本地标签名>
推送本地全部未推送过的标签到远程:
$ git push <远程主机名> --tags
删除一个远程标签(即推送一个空的标签到远程标签):
$ git push <远程主机名> :refs/tags/<远程标签名>
在Git v1.7.0 之后,还可以使用下面这种语法删除远程标签:
$ git push <远程主机名> --delete tag <远程标签名>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。