Git

git fetch & pull & push

2020-03-25  本文已影响0人  晓风残月1994
image

简单来说,git pull = git fetch + git merge,分开来执行,以便将远程内容拉取到本地后,检查满意了,再 merge 到本地分支。

1. git fetch

$ git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地
$ git fetch origin master // 拉取远程主机 master 分支上的最新内容

取回更新后会返回一个 FETCH_HEAD,代表了某个分支在远程的最新状态。

$ git log -p FETCH_HEAD // 查看刚才拉的东西
$ get merge FETCH_HEAD // 满意了再合并到当前所在分支

2. git pull

git pull 的过程可以理解为:

git fetch origin master // master 分支仅为举例
get merge FETCH_HEAD 

即将远程主机的某个分支的更新取回,并与本地指定的分支合并,完整格式可表示为:

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

但平时好像都是直接粗暴地用了简写,直接 git pull 也能行,那是因为在最初的时候,git 本地新建一个分支后,必须要做远程分支关联。如果没有关联, git 会提示你显式地添加关联,关联目的是如果在本地分支下操作 git pull 和 git push 时不需要再次指定远程分支。

image.png

git 查看远程主机详细配置信息,非常详细地记录了 git pull 和 git push 时的策略:

git remote show origin
1
2

关联的不满意?之前不小心关联错了?可以修改关联:

$ git branch --set-upstream-to origin/分支名 // 不仅可以和远程分支关联也可以和本地分支关联,具体有需求时再说
// Branch 'test-branch' set up to track remote branch 'dev' from 'origin'.

之后可以通过如下方式,查看是否更改成功:

git branch -vv
git remote show origin
cat .git/config
git branch -a // 查看本地和远程的所有分支

3. git push

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

注意:以上格式中,如果单独省略本地分支名,相当于推送空的分支到远程分支,所以会删除远程分支!


参考文章:

  1. git fetch & pull详解
  2. git pull 默认拉取远端其他分支
  3. GIT如何查看本地分支与远程分支的关联配置(git branch --set-upstream)
上一篇下一篇

猜你喜欢

热点阅读