当前位置:   article > 正文

Git常用命令fetch和pull和push_fetch push

fetch push

Git常用命令pull和push

1、fetch

从远程获取代码库。

# 会将所有远程分支都拉到本地
# 并不会合并代码
$ git fetch
  • 1
  • 2
  • 3
# 下载远程仓库的所有变动
$ git fetch remote
$ git fetch origin
  • 1
  • 2
  • 3
# 指定拉取远程remote的branch分支到本地
$ git fetch remote branch
$ git fetch origin develop
  • 1
  • 2
  • 3
# 获取所有原创分支并清除服务器上已删掉的分支
# 删掉远程dev分支,此时本地版本库中的数据快照仍然有dev分支
# 该命令会与远程库进行一次同步,最终清理掉版本库中的dev分支,但本地工作区中的dev分支并不会删除
$ git fetch --prune
  • 1
  • 2
  • 3
  • 4

2、pull

pull 从远程获取代码并合并本地的版本。

# 第一次和远程关联上之后,在提交之前要先pull一下远程的更新才行
# 拉取所有远程分支到本地仓库中
# git pull = git fetch + git merge
$ git pull
  • 1
  • 2
  • 3
  • 4
# 取回远程仓库的变化,并与本地分支合并
$ git pull <远程主机名> <远程分支名>:<本地分支名>
$ git pull origin master:branch1
  • 1
  • 2
  • 3

如果远程分支是与当前分支合并,则冒号后面的部分可以省略:

$ git pull <远程主机名> <远程分支名>
$ git pull origin master
  • 1
  • 2

用 fetch 表示:

$ git fetch origin branchName
# 合并名为origin/master的分支到当前所在分支
$ git merge origin/branchName
  • 1
  • 2
  • 3

获取远程仓库的变更:

# 获取远程服务器上的变更,并合并到你的工作目录
$ git pull repository
$ git pull https://gitee.com/zsx242030/um.git
  • 1
  • 2
  • 3

3、push

从将本地的分支上传到远程并合并。

分支推送顺序的写法是 <本地分支>:<远程分支>。

3.1 推送分支

# 将本地分支推送到远程分支
# 如果远程没有这个分支,会新建一个同名的远程分支
# 如果省略远程分支名,则表示两者同名,即会产生一个和本地分支同名的远程分支
# 该命令可以理解为将<本地分支名>的代码推送到<远程主机名>中的<远程分支名>上
# <远程主机名>默认为origin
$ git push <远程主机名> <本地分支名>:<远程分支名>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

该命令的几种用法:

第一种,所有的参数都有:

$ git push origin develop:master
  • 1

将本地的 develop 分支上的代码推送到远程主机名为 origin 中 master 的分支上,如果远程的 master 分支不存

在,则会被创建,这也是一种创建远程分支的办法。

第二种,省略 <远程分支名>:

$ git push origin develop
  • 1

如果本地分支名和远程分支名一样的情况下,可以省略 <远程分支名>。如果远程主机中不存在该分支,那么会被

创建。该命令等价于:

$ git push origin develop:develop
  • 1

第三种,省略 <本地分支名> 和 <远程分支名>:

$ git push origin
  • 1

如果本地分支已经跟远程分支建立了追踪关系,那么可以省略<远程主机名>和 <远程分支名>。

使用 git branch -vv 命令,可以查看本地分支跟远程分支是否存在追踪关系。

这种推送方式的具体操作:

$ git checkout -b branch1

$ git push --set-upstream origin branch1
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
remote: Create a pull request for 'branch1' on Gitee by visiting:
remote:     https://gitee.com/zsx242030/um/pull/new/zsx242030:branch1...zsx242030:master
To https://gitee.com/zsx242030/um.git
 * [new branch]      branch1 -> branch1
Branch branch1 set up to track remote branch branch1 from origin.

$ git push origin

$ git branch -vv
* branch1 40f466a [origin/branch1] develop | add test.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

第四种,省略 <远程主机名>、<本地分支名> 和 <远程分支名>:

$ git push
  • 1

只需要保证本地仓库只跟一台远程主机有关联即可。

如果当前分支与多个主机存在追踪关系,则可以使用 -u 选项指定一个默认主机,这样后面就可以不加任何参数使

用 git push。

$ git checkout -b branch2

$ git push --set-upstream origin branch2
Total 0 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
remote: Create a pull request for 'branch2' on Gitee by visiting:
remote:     https://gitee.com/zsx242030/um/pull/new/zsx242030:branch2...zsx242030:master
To https://gitee.com/zsx242030/um.git
 * [new branch]      branch2 -> branch2
Branch branch2 set up to track remote branch branch2 from origin.

$ git push

$ git branch -vv
* branch2 40f466a [origin/branch2] develop | add test.txt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

不带任何参数的 git push,默认只推送当前分支,这叫做 simple 方式。此外,还有一种 matching 方式,会推送

所有有对应的远程分支的本地分支。Git 2.0 版本之前,默认采用 matching 方法,现在改为默认采用 simple 方

式。如果要修改这个设置,可以采用 git config 命令。

$ git config --global push.default matching
# 或者
$ git config --global push.default simple
  • 1
  • 2
  • 3

除非你将分支推送到远端仓库,不然该分支就是不为他人所见的。

# 强行推送当前本地分支到远程仓库,即使有冲突
$ git push <远程主机名> --force
$ git push --force origin
  • 1
  • 2
  • 3
# 推送所有本地分支到远程仓库
$ git push <远程主机名> --all
$ git push --all origin
  • 1
  • 2
  • 3

上面命令使用 –force 选项,结果导致在远程主机产生一个非直进式的合并(non-fast-forward merge)。除非你很

确定要这样做,否则应该尽量避免使用 –force 选项。

# 第一次推送是要加上-u,可以把本地的master和远程的master关联起来,方便以后的推送或者拉取
$ git push -u origin master
  • 1
  • 2

3.2 删除分支

# 删除远程分支
$ git push origin --delete <远程分支名>
$ git push origin --delete develop
  • 1
  • 2
  • 3
# 如果省略本地分支名,则表示删除指定的远程分支
# 因为这等同于推送一个空的本地分支到远程分支
$ git push origin :<远程分支名>
$ git push origin :develop
  • 1
  • 2
  • 3
  • 4

3.3 推送tag

# 推送某个tag到远程
$ git push <远程主机名> tagname
  • 1
  • 2
# 推送所有tag到远程
$ git push <远程主机名> --tags
# 把所有tag推送到远程仓库
$ git push origin --tags
  • 1
  • 2
  • 3
  • 4

演示:

# master分支创建tag
$ git tag -a v0.1 -m "version 0.1 released"

$ git tag
v0.1

$ git push origin v0.1
Counting objects: 1, done.
Writing objects: 100% (1/1), 163 bytes | 163.00 KiB/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/zsx242030/um.git
 * [new tag]         v0.1 -> v0.1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3.4 删除tag

# 删除远程tag
# 删除的话先删除本地的tag,然后再删除远程的
$ git push origin :refs/tags/[tagName]
  • 1
  • 2
  • 3

演示:

$ git tag -d v0.1
Deleted tag 'v0.1' (was 6b7bd2b)

$ git tag

$ git push origin :refs/tags/v0.1
remote: Powered by GITEE.COM [GNK-6.4]
To https://gitee.com/zsx242030/um.git
 - [deleted]         v0.1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/593486
推荐阅读
相关标签
  

闽ICP备14008679号