git pull 与 git fetch
git pull:
官方说明:https://git-scm.com/docs/git-pull
git pull 作用是将远程仓库中的更改合并到当前分支中
格式:
git pull [<options>] [<repository> [<refspec>…]]
默认模式下,相当于 git fetch + git merge FETCH_HEAD 命令。
更准确的说是,git pull 相当于: 先执行git fetch + 指定参数,然后执行git merge 命令将检索到的分支合并到当前分支。
下面是git pull的过程:
1.git fetch origin master 先拉取,让本地的origin/master先更新到最新。
A---B---C master on origin
/
D---E---F---G master
2.git merge origin/master
A---B-----C origin/master
/ \
D---E---F---G--- H master
解决git pull与本地文件冲突。
出错信息如下:
error: Your local changes to 'c/environ.c' would be overwritten by merge. Aborting.
Please, commit your changes or stash them before you can merge.
1.将本地修改暂存起来。
git stash
//可以看到stash@{0}.... 暂存的信息
2.pull把远端内容下载下来。
git pull origin master
3.合并暂存内容的冲突部分到文件。
git stash pop stash@{0}
//会提示冲突的文件
4.解决文件中冲突的部分
依次打开上一步提示的冲突文件,会看到标记出来的冲突内容,修改后就可以提交了
git fetch:
git fetch <remote>
fetch仓库中所有分支。例:git fetch origingit fetch <remote> <branch>
fetch指定的分支。例:git fetch origin developgit fetch --all
fetch所有已注册过的远端仓库的全部分支。
例:使用 git fetch 同步 origin
git fetch origin
执行后输出会显示被下载到本地的所有分支
a1e8fb5..45e66a4 main -> origin/main
a1e8fb5..9e8ab1c develop -> origin/develop
下图方块表示远端分支的commits,圆形代表的本地分支commits。
-
查看上游main分支有哪些新增加的commits,可以执行如下git log命令,传入origin/main作为过滤参数:
git log --oneline main..origin/main
-
可以通过下面的命令查看本地分支与远程仓库分支上的提交差异:
# 切换到想查看差异的分支 git checkout main 或 git switch main # 打印提交差异 git log origin/main
-
确认没问题后,使用以下命令合并来自远程仓库的变更
git merge origin/main