Git fetch和git pull的区别
二者都能够从远程获取最新版本到本地。
1. Git fetch
仅从远程获取最新版本到本地,不会进行 merge(合并)操作。
操作示例
- 从远程的 origin的 master 主分支上获取最新版本到 origin/master 分支上:
bash
git fetch origin master
- 比较本地的 master分支和 origin/master 分支的区别:
bash
git log -p master..origin/master
- 合并操作:
bash
git merge origin/master
2. Git pull
从远程获取最新版本并 merge(合并)到本地。
操作示例
以下命令相当于进行了 git fetch 和 git merge两步操作:
bash
git pull origin master
实际工作中的选择
在实际工作中,git fetch可能是更好的选择。因为在执行 merge之前,可以根据实际情况决定是否进行合并。
报错 error: You have not concluded your merge (MERGE_HEAD exists). 的原因及解决办法
原因
该报错可能是由于以前 pull下来的代码自动合并失败导致的。
解决办法
办法一:保留本地的更改,中止合并 -> 重新合并 -> 重新拉取
bash
git merge --abort
git reset --merge
git pull
办法二:舍弃本地代码,远端版本覆盖本地版本(慎重使用)
bash
git fetch --all
git reset --hard origin/master
git fetch