git fetch
获取远程更改时,不会自动与本地分支合并,可以使用git pull
手动合并。
git pull
的作用是从一个仓库或者本地的分支拉取并且集成代码。git pull
相当于 git fetch
跟着一个 git merge FETCH_HEAD
。
git pull
的过程如下图所示:
示例
执行git pull
:
Kevin@qikegu MINGW64 /g/project/git-demo (master)
$ git pull
Auto-merging test1.txt
hint: Waiting for your editor to close the file...
Merge made by the 'recursive' strategy.
test1.txt | 1 +
1 file changed, 1 insertion(+)
拉取时本地有未提交修改
本地有未提交修改,拉取远程更改时,如果会覆盖本地修改,Git会提示先提交或储藏(git stash)本地修改,防止丢失。
示例
本地修改test1.txt
,不提交,然后执行git pull
,看看本地修改会不会丢失。
Kevin@qikegu MINGW64 /g/project/git-demo (master)
$ git pull
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/kevinhwu/git-demo
adac694..77d5d2d master -> origin/master
error: Your local changes to the following files would be overwritten by merge:
test1.txt
Please commit your changes or stash them before you merge.
Aborting
可以看到,本地修改不会丢失,git提示2个解决办法:
- 提交 – 这个方法前面章节已经详细介绍过
- 储藏(
git stash
)本地修改
那么方法2是怎么回事呢,下一章节我们将介绍。