2019年2月

逛论坛的时候忽然看到有楼在讨论 git fetch / git pull / git reset --hard 的问题,记录一下回复和我自己查阅的内容

  • git fetch 用于在远程仓库更新时(包括他人上传 / 更改了文件或者说开了一个新的分支),拉取更改到本地

  • git pull = git fetch + git merge origin/<branch> 用于当他人在操作者本地当前工作分支上产生了新的commits,如果操作者想将他人的 commits 合并到自己的本地分支时。git 会首先尝试自动合并,如果产生冲突,需要手动解决

  • git reset 在这个地方是处理 当操作者本地与远程仓库合并时产生了很多冲突时,这个时候如果不是必要保留本地文件更改,使用此命令。该命令会强制将所有本地文件与远程仓库版本同步,一般是先使用git fetch ,再运行git reset --hard origin/<master>


也就是说


git fetch git reset --hard origin/<branch>

将会忽略掉本地更改,强制与远程仓库同步, 而


git fetch git merge origin/<branch> # 或者说下句 git pull

将会尝试保有本地更改,采取手动解决冲突的方式