今天在git pull时遇到了问题,它自动auto-merge的结果不是我想要的,所以我隐约觉得git pull是一个不太安全的做法。于是上网查询了更安全同步本地与远程代码的方法,发现了git fetch这个命令,于是调研了一下。
git fetch origin master#只取回远程更新的信息,但并没有改变本地的代码,工作空间和缓存区都没改变,就相当于专门开辟了一片空间来保存远程仓库更新的信息。远程更新的信息指针为FETCH_HEAD
git diff FETCH_HEAD#展示本地当前状态和远程仓库最新提交的区别
git show FETCH_HEAD#展示远程仓库最新提交和远程仓库上次提交的区别
git fetch origim master:tmp#将远程仓库的内容克隆到新建分支tmp分支上
git diff tmp#比较maste和tmp的区别,即本地和远程最新提交的区别,来确定merge是否有风险
git merge FETCH_HEAD#将本地和远程最新提交merge
git pull 就相当于 git fetch && git merge FETCH_HEAD
所以我觉得还是git fetch相对安全一点,最起码在merge之前能知道本地和远程到底有啥不一样
建议,以后更新代码使用以下方式
git fetch#获取远程更新
git diff FETCH_HEAD#比较远程最新提交与本地仓库的区别,确认无误后
git merge FETCH_HEAD#确认无误后merge代码