当前位置: 首页 > 工具软件 > Ruby/Git > 使用案例 >

【Git/Github】从远程分支合并最新版本到本地- git remote/ git fetch/ git pull

咸昊昊
2023-12-01

git clone到本地的项目,如果远程仓库更新,需要将更新取回本地,并与本地的分支合并。有两种命令可以做到:

  • git fetch

  • git pull

这里主要是解决fork的远程项目更新之后,如何将最新版与本地合并。不涉及到多人协作开发。
首先要将远程主机关联,需要用到git remote命令。

git remote

git remote 用于管理主机名。-v可以查看主机网址。

$ git remote -v
origin  https://github.com/****/boston_housing.git (fetch)
origin  https://github.com/****/boston_housing.git (push)

这里的远程主机是自己的账号,如果是clone的别人的项目,还需要将作者的主机添加到远程主机中。

git remote add <主机名> <网址> ,主机名可以自己命名。

git remote rename <原主机名> <新主机名> ,用于更改远程主机的名字。

$ git remote add udacity https://github.com/nd009/boston_housing
$ git remote -v
origin  https://github.com/****/boston_housing.git (fetch)
origin  https://github.com/****/boston_housing.git (push)
udacity https://github.com/nd009/boston_housing (fetch)
udacity https://github.com/nd009/boston_housing (push)

git fetch

git fetch用于将远程主机的更新取回本地,完成更新还需要结合git merge使用。

$ git fetch udacity master          # 从远程udacity的master主分支下载最新版本
$ git log -p master..udacity/master # 比较本地master分支和udacity/master的差别
$ git merge udacity/master          # 进行合并

具体显示如下:

$ git fetch udacity master
remote: Counting objects: 3, done.
remote: Total 3 (delta 2), reused 2 (delta 2), pack-reused 1
Unpacking objects: 100% (3/3), done.
From https://github.com/nd009/boston_housing
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> udacity/master

到目前只是保存了远程主机master分支的信息,并没有进行合并。可以用cat .git/FETCH_HEAD查看 FETCH_HEAD 的内容。

最后用git mergegit rebase命令,在本地分支上合并远程分支。

$ git merge udacity/master
# 或者
$ git rebase udacity/master

git pull

git pull命令的作用是,取回远程主机某个分支的更新,再与本地的指定分支合并。

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

git pull 就等同于 git fetch + git merge 。没法选择怎么合并。

 类似资料: